题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。
n<=39
题目分析
斐波那契数列的数学规律是f[n] = f[n-1] + f[n-2]
动态规划
从前向后递推即可。
C++
class Solution
{
public:
int Fibonacci(int n)
{
int ans[50] = {0, 1};
for (int i = 2; i <= n; i++)
ans[i] = ans[i - 1] + ans[i - 2];
return ans[n];
}
};
Java
class Solution {
public int Fibonacci(int n) {
int[] ans = new int[50];
ans[0] = 0;
ans[1] = 1;
for (int i = 2; i <= n; i++)
ans[i] = ans[i - 1] + ans[i - 2];
return ans[n];
}
}
记忆化递归
从后向前递归,将结果保存下来,便于复用,节省递归时间。
C++
class Solution
{
public:
Solution()
{
memset(ans, 0, sizeof(ans));
}
int Fibonacci(int n)
{
if (n == 0)
return 0;
if (n == 1)
return 1;
if (ans[n] == 0)
ans[n] = Fibonacci(n - 1) + Fibonacci(n - 2);
return ans[n];
}
private:
int ans[50];
};
Java
public class Solution {
private int[] ans = new int[50];
public int Fibonacci(int n) {
if (n == 0)
return 0;
if (n == 1)
return 1;
if (ans[n] == 0)
ans[n] = Fibonacci(n - 1) + Fibonacci(n - 2);
return ans[n];
}
}
一个回复在 “JZ7 — 斐波那契数列”