题目描述:求一个斐波那契数列(Fibonacci)的第 n 项。

分析:不要用递归,直接用循环,因为递归的效率太低,会做很多重复的运算。

wKioL1d6MfegqgWnAABSRGiB5Go955.png

long long Fibonacci_Solution2(unsigned n){    int result[2] = {0, 1};    if(n < 2)        return result[n];    long long  fibNMinusOne = 1;    long long  fibNMinusTwo = 0;    long long  fibN = 0;    for(unsigned int i = 2; i <= n; ++ i)    {        fibN = fibNMinusOne + fibNMinusTwo;        fibNMinusTwo = fibNMinusOne;        fibNMinusOne = fibN;    }     return fibN;}

wKiom1d7Y8nwUotXAAB-5pKS8Sw543.png

wKioL1d7ZBuQ51YZAAAVuSk7VdE740.pngj_0016.gif

wKiom1d7ZBuyO2H0AADwNk0F-7I722.png

一般情况下,面试官很少会让面试者写出这种思想的代码,因此这种解法了解它的思想就可以了。