#include <iostream>
using namespace std;
class Solution {
public:
int Fibonacci(int n) {
if(n == 0)
return 0;
else if(n == 1)
return 1;
// else
// return Fibonacci(n-1) + Fibonacci(n-2);
else{
int prepre = 0;
int pre = 1;
int result = 0;
for(int i = 2; i <= n; i++){
result = pre + prepre;
prepre = pre;
pre = result;
}
return result;
}
}
};
int main()
{
Solution sol;
int n = 7;
int b = sol.Fibonacci(n);
cout << b << endl;
return 0;
}
一种是用迭代,对于n比较大的情况,栈可能会溢出,也存在重复计算的问题,本题实测简单迭代无法通过;
第二种,循环。
前者是从n往下迭代,后者是从0和1往上循环累加。
注意,else后面的函数块必须要有大括号。