题目
斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
给定 N,计算 F(N)。
代码一(自己写出的第一个,数组循环试用):
class Solution {
public int fib(int N) {//N=5
if (N==0)
return 0;
if(N==1)
return 1;
// int sum=fib(N-1)+fib(N-2);//f4+f3 f3+f2+f2+f1 f2+f1+f1+f0+f1+f0+1 1+0+1+1+0+1+0+1
// return sum;
return fib(N-1)+fib(N-2);
}
}
代码二(动态规划)
class Fib{
/**
* 1.动态规划:0, 1, 1, 2, 3, 5,...
* i=0 num sum
* i=1 num sum
* i=2 num sum
* i=3 num sum
* .... ...
*
* 执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户
* 内存消耗 :33.5 MB, 在所有 Java 提交中击败了51.25%的用户
*
*/
public int fib1(int N) {
int i = 0;
int sum = 0, num = 1;
while(i++ < N) {
sum += num;
num = sum - num;
}
return sum;
}