题目描述:求一个斐波那契数列(Fibonacci)的第 n 项。
分析:不要用递归,直接用循环,因为递归的效率太低,会做很多重复的运算。
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;}
一般情况下,面试官很少会让面试者写出这种思想的代码,因此这种解法了解它的思想就可以了。