有人可以向我解释如何存储前两个斐波纳契数字,这对这个问题有很大帮助。
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++;
}
}
答案 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 ));
}