我在Stack Overflow上看到过很多斐波纳契的例子,但我没有找到答案。所以,我有一个代码:
public class Fib {
public static int fib(int n) {
if (n < 2) {
return n;
}
else {
return fib(n-1)+fib(n-2);
}
}
public static void main(String[] args) {
for (int i=0; i<8; i++)
System.out.print(fib(i)+", ");
}
}
运行之后,我们将获得 0,1,1,2,3,5,8,13,
我有一个问题:我们如何获得 8 ? FIB(6)= ............
任何人都可以写详细信息吗?
答案 0 :(得分:1)
fib(0) = 0
fib(1) = 1
fib(2) = fib(1) + fib(0) = 1
fib(3) = fib(2) + fib(1) = 2
fib(4) = fib(3) + fib(2) = 3
fib(5) = fib(4) + fib(3) = 5
fib(6) = fib(5) + fib(4) = 8
当您致电fib(6)
时,它会执行fib(5)
和fib(4)
等,直到它遇到基本案例fib(1)
和fib(0)
。
答案 1 :(得分:0)
fib(6) = fib(5) + fib(4) //..
fib(5) = fib(4) + fib(3) //..
fib(4) = fib(3) + fib(2) //2 + 1
fib(3) = fib(2) + fib(1) //1 + 1
fib(2) = fib(1) + fib(0) //1 + 0 Begin here (stop condition)
答案 2 :(得分:0)
fib(6) = fib(5)+fib(4) = fib(4)+fib(3)+fib(3)+fib(2) = fib(3)+fib(2)+fib(2)+fib(1)+fib(2)+fib(1)+fib(1)+fib(0) = fib(2)+fib(1)+fib(1)+fib(0)+fib(1)+fib(0)+1+fib(1)+fib(0)+1+1+0 = fib(1)+fib(0)+1+1+0+1+0+1+1+0+1+1+0 = 1+0+1+1+0+1+0+1+1+0+1+1+0=8
希望它有所帮助......