面试题10:斐波那契额数列
题目:求斐波那契数列的第n项
思路:可以用递归,但递归的性能消耗太严重。改用从下而上用循环来计算。按照递推关系式,先计算第一二项,然后后续项由前面项相加得到即可。
类似问题还有青蛙跳台阶问题。一只青蛙一次跳1级台阶或两级台阶,请问青蛙跳上n级台阶总共由集中跳法
代码:
#include<iostream>
using namespace std;
long long fib(int n);
int main() {
long long r = fib(5000);
cout << "result:" << r << endl;
return 0;
}
long long fib(int n) {
int result[2] = { 0,1 };
if (n < 2) {
return result[n];
}
long long fib0 = 0;
long long fib1 = 1;
long long fibN = 0;
for (int i = 2; i <= n; i++) {
fibN = fib0 + fib1;
fib0 = fib1;
fib1 = fibN;
}
return fibN;
}