时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
思路:
首先想到的肯定是使用递归
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);
}
};
接着采用递推的方式,使用循环计算斐波那契数列
class Solution {
public:
int Fibonacci(int n) {
int fn1 = 1;
int fn2 = 1;
if(n <= 0)
{
return 0;
}
if(n == 1|| n ==2)
{
return 1;
}
while(n-- > 2)
{
fn1 = fn1 + fn2;
fn2 = fn1 - fn2;
}
return fn1;
}
};
后来又在网上看到了另一种解法,使用动态规划的方法来做的(但我并没有运行成功,总是说我没有初始化,但理论感觉还是行得通的,所以记录下)
class Solution {
public:
int Fibonacci(int n) {
if(n <= 1)
return 1;
int step[] = new int[n+1];
step[0] = 0;
step[1] = 1;
for(int i = 2;i < n;i++)
{
step[i] = step[i-2] + step[i - 1];
}
return step[n];
}
};
来源:https://www.cnblogs.com/whiteBear/p/12433680.html