斐波那契数列
题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
递归解法(不推荐):
class Solution {
public int Fibonacci(int n) {
if(n<=1) return n;
int result=0;
result=Fibonacci(n-1)+Fibonacci(n-2);
return result;
}
}
思路:没什么好说的,递归解法没什么技术含量,消耗内存巨大,运行时间巨长.
for循环解法:
class Solution {
public int Fibonacci(int n) {
int current=0;
int next=1;
int result=0;
if(n<=1) return n;
for(int i=2; i<=n; i++) {
result=current+next;
current=next;
next=result;
}
return result;
}
}
思路:利用for循环来实现递归,输入的n为for循环的循环次数.
动态规划解法:
class Solution {
public:
int Fibonacci(int n) {
int f = 0, g = 1;
while(n--) {
g += f;
f = g - f;
}
return f;
}
};
思路:这里从动态规划的核心思想-记录结果再利用入手解答.用f记录上一个结果的答案,再通过与g相加得出结果.