java - 打印出斐波那契数列

标签 java arrays recursion printing fibonacci

我正在尝试编写一个递归算法来计算斐波那契数。然而,该程序在打印结果方面遇到了困难。

我的想法是将每个计算值存储到一个数组中(这样算法应该更快)。

我想要的输出:

The fibonacci of n = 1 is fn= 1    
The fibonacci of n = 2 is fn= 2    
The fibonacci of n = 3 is fn= 2    
The fibonacci of n = 4 is fn= 3
...
The fibonacci of n = 8 is fn= 21
public class fibonacciCalculator {

    static int[] arr = new int[50];

    static int fibo (int n, int arr[]) {
        if ( n == 0 ) {
            return 0; 
        }else if ( n == 1 ) {
            return 1; 
        } 
        if ( arr[n-1] == 0) {
            arr[n-1] = fibo(n-1, arr);  
        }
        if ( arr[n-2] == 0) {
            arr[n-2] = fibo(n-2, arr);
        }
        return arr[n-1] + arr[n - 2];
    } 

    public static void main(String[] args) {

        for (int i = 1; i == 8; i++) {
            if (arr [i] == 0) {
                fibo(i, arr);
                int x = arr[i];
                String a = String.format("The fibonacci of n = %d is fn= %d", i , x);
                System.out.println(a);
                }
        }
    }
}

最佳答案

您可以在不声明数组的情况下执行此操作。这样,中间值就存储在执行堆栈中:

public class fibonacciCalculator {

    static int fibo (int n) {
        if ( n == 0 ) {
            return 0; 
        } else if ( n == 1 ) {
            return 1; 
        } else {
            return fibo(n-2) + fibo(n-1);  
        }
    } 

    public static void main(String[] args) {

        for (int i = 1; i <= 8; i++) {
            int x = fibo(i);;
            String a = String.format("The fibonacci of n = %d is fn= %d", i , x);
            System.out.println(a);
        }
    }
}

关于java - 打印出斐波那契数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58780595/

相关文章:

java - 扫描仪从标准 IO 读取的数字错误。 java

java - 登录后触发欢迎屏幕 2-3 秒

java - RxJava - 单机无法运行

php - 需要从函数:(输出数组

c++ - 无法对包含字符串 C++ 的结构数组进行操作

python - 根据端点递归划分列表

java - 如何在 java 中将文件(通过 URL 寻址)读入字符串?

python - 将 numpy.array 向右旋转一位

c - 我不明白 C 中二叉树中的函数

java - 如何将电话号码中的字符串关联打印为文本?