剑指offer题目7:斐波那契数列
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
解答思路
典型的坑你用递归去实现的题目,用递归很简单。
int Fibonacci(int n) {
if(n == 0) {
return 0;
}
if(n == 1) {
return 1;
}
return Fibonacci(n-1) + Fibonacci(n-2);
}
然后你就gg了,因为会爆栈。
注意到斐波那契数列是f(n) = f(n-1) + fn(n-2),因此每次迭代把上一次的f(n)变成f(n-1),同理f(n-1)即可。
实现代码
// 0, 1, 1, 2, 3
class Solution {
public:
int Fibonacci(int n) {
int i = 0;
int ret = 0;
int ret2 = 0;
int ret1 = 0;
if(n == 0 || n== 1) {
return n;
}
while(i <= n) {
if(i == 0) {
ret2 = 0;
} else if(i == 1) {
ret1 = 1;
} else {
ret = ret1 + ret2;
ret2 = ret1;
ret1 = ret;
}
++i;
}
return ret;
}
};
作者:大傻逼
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号