Fibonacci序列使用for循环java

时间:2014-09-13 19:20:33

标签: java

有人可以向我解释如何存储前两个斐波纳契数字,这对这个问题有很大帮助。

public static void main(String[] args) {
    int k = 0;
    for (int x = 1; x < 13; x++) {

        if (k > 2) {
            k = (k - 1) + (k - 2);
        }
        System.out.print(k+" ");
        k++;
    }

}

1 个答案:

答案 0 :(得分:2)

当你得到5号作为打印输出时你将设置k ++,这将使k = 6。 之后k = (k - 1) + (k - 2);输出k =(6-1)+(6-2)= 5 + 4 = 9,(注意:下一个应该是8,所以你的算法错了)

你误解了斐波纳契数的概念。

第n个Fibonacci数等于前两个Fibonacci数的总和。不是(Fn-1)+(Fn-2)

已编辑: 因此,你可以看到我们是否知道前2个Fibonacci数,我们可以通过加上这两个来计算第三个。第四个将是第二个和第三个的总和,它将.....到n。

好的,这是一种你不需要递归方法的方法(你需要将找到的Fibonacci数存储在数组中)

好吧假设你想要找到第一个 n 斐波那契数字。然后创建一个大小为 n 的数组,并将第一个和第二个元素设置为一个(1),因为前两个Fibonacci数字是1和1 。现在循环遍历从 2到n 的数组。在每次迭代中,将前两个元素添加到下一个元素。 仔细阅读代码。你会发现它很容易做到。

 public static void fib(int n){

    int Fibonacci [] = new int[n];
    Fibonacci [0]=1;
    Fibonacci [1]=1;

    for (int i = 2; i < n; i++) {

        Fibonacci [i]=Fibonacci [i-1]+Fibonacci [i-2];

    }

    System.out.println(Arrays.toString(Fibonacci ));
}