原题参见july大神博客系列【微软面试100题】
题目描述:用尽量快的方法求解Fibonacci数列第n项。
分析思路:(本题亦见于《剑指offer》面试题9)
显然适用递归的方法会比较慢,也不是面试官的考点,那就从迭代的思路考虑。
long long Fibonacci(unsigned int n)
{
int result[2] = {0,1};
if(n<2) return result[n];
long long fibMiddle1 = 0; //用来保存中间值
long long fibMiddle2 = 1; //用来保存中间值
long long fibResult = 0; //用来保存结果
for(unsigned int i = 2; i <= n; ++i)
{
fibResult = fibMiddle1 + fibMiddle2;
fibMiddle1 = fibMiddle2;
fibMiddle2 = fibResult;
}
return fibResult;
}