一、问题描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)n<=39。
二、解题思路:
1.斐波那契数列规律:f(0) = 0,f(1) = 1,f(n) = f(n-1) + f(n-2),(n>1);
2.递归(自顶向下计算):递归很容易就可以算出,重要的是找到递归的出口,此处递归出口非常明显,就是当n == 0 || n == 1的时候
2.1.代码实现
public class Solution {
public int Fibonacci(int n) {
if(n == 0 || n == 1) return n;
return Fibonacci(n-1) + Fibonacci(n - 2);
}
}
3.动态规划(自底向上计算):将原问题拆解成若干子问题,同时保存子问题的答案,使得每个子问题只求解一次,最终获得原问题的答案。
3.1.代码实现
public class Solution {
public int Fibonacci(int n) {
int[] fibo = new int[n + 1];
for(int i = 0; i <= n; i++) {
if(i <= 1) {
fibo[i] = i;
}else {
fibo[i] = fibo[i-1] + fibo[i-2];
}
}
return fibo[n];
}
}