题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39

来源:https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=13&tqId=11160&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

思路:
我们可以将递推式的求解从自顶向下改为自底向上(循环实现)。简而言之,我们已知前两项的值,然后我们就可以用前两项的值求出第3项的值,接着求第4、第5、……,直到求出第n项的值。

public class Solution {
public int Fibonacci(int n) {
int a = 0;
int b = 1;//第一项的值
while(n-->0){
b = a + b;//根据前两项计算出后一项
a = b - a;//保存计算结果的前一项
}
return a;
}
}

递归:

public class Solution {
public int Fibonacci(int n) {

if(n<2)return n;
//第n项就是第n-1项加上第n-2项
return Fibonacci(n-1)+Fibonacci(n-2);
}
}