斐波那契数列
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
具体实现:
解法一:
解题思路:递归完成,确定n=0,1,2时的值,后面直接调用n-1和n-2即可,但是时间太久了
public class Solution {
public int Fibonacci(int n) {
if(n == 0)
return 0;
if(n == 1 || n == 2)
return 1;
return Fibonacci(n-1) + Fibonacci(n-2);
}
}
解法二:
解题思路:动态规划,时间复杂度o(n),从a=0,b=1开始,下一个就是a=1,b=2;再下一个a=2,b=3,这样算到最后a就是n的结果。
public int Fibonacci(int n) {
int a = 0, b = 1;//a代表前一个,b代表后一个
while(n-- > 0) {//执行了n次
b += a;
a = b - a;
}
return a;
}