public static int Fibonacci(int i) {
if(i <= 0) {
return 0;
}
if(i == 1 || i == 2) {
return 1;
}
return Fibonacci(i -2) + Fibonacci(i-1);
}
注意:
递归的时候可以将返回值拆开来看,就是最后转换成许多个Fibonacci(1)及Fibonacci(2)的结果,也就是最终返回值与Fibonacci(1)及Fibonacci(2)实际返回值相关,次数就等于递归的次数了,这样就不难理解了。
即:最终返回值=递归的次数*1(i==1或i==2的返回值)
迭代算法:
public static int FibonacciD(int num) {
if(num <= 0) {
return 0;
}
if(num == 1 || num == 2) {
return 1;
}
int first = 1,second =1,third = 0;
for(int i = 3; i<= num ;i++) {
third = first + second;
first = second;
second = third;
}
return third;
}