我不知道我做错了什么。我正在尝试打印序列的“fn”。我是根据别人的代码写的。有什么想法吗?
这是我的代码:
int num = n;
int fn = 1;
int f1 = 0;
int f2 = 1;
for (int i = 2; i < n; i++)
{
fn = f1 + f2;
f1 = f2;
f2 = fn;
}
System.out.print( "fib( " + num + " ) is ");
System.out.println( fn );
最佳答案
我运行了你的代码,看看是否有问题。以下是值 2-10 的各种程序输出:
fib( 2 ) is 1
fib( 3 ) is 1
fib( 4 ) is 2
fib( 5 ) is 3
fib( 6 ) is 5
fib( 7 ) is 8
fib( 8 ) is 13
fib( 9 ) is 21
输出接近正确,但您得到的结果是 fib(n - 1)
每一次。原因是你正在停止你的 for
提前循环一次迭代。尝试使用 <=
修改您的条件:
for (int i = 2; i <= n; i++)
输出:
fib( 2 ) is 1
fib( 3 ) is 2
fib( 4 ) is 3
fib( 5 ) is 5
fib( 6 ) is 8
fib( 7 ) is 13
fib( 8 ) is 21
fib( 9 ) is 34
关于java - 尝试创建斐波那契数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19055683/