/*面试题9
题目:写一个函数,输入n,求斐波那契数列的第n项。
很多教科书中的解法:
long long Fibonacci_Solution1(unsigned int n)
{
if(n <= 0)
return 0;
if(n == 1)
return 1;
return Fibonacci_Solution1(n - 1) + Fibonacci_Solution1(n - 2);
}
这是从第n项向前计算的方法,很多计算量实际上是重复的。
*/
long long Fibonacci_Solution2(unsigned int n)//这是从第2项开始向第n项计算的方法,消除了很多重复计算
{
int result[]={0,1};
if(n<2)
return result[n];
long long fibNMinusOne=1;
long long fibNMinusZero=0;
long long fibN = 0;
for(unsigned int i=1;i!=n;++i)//原代码使用i <= n,i可以从2开始循环,修改为i!=n后,i=2时是不循环的,因此将循环中修改为i=1为循环的起始条件
{
fibN=fibNMinusZero+fibNMinusOne;
fibNMinusZero=fibNMinusOne;
fibNMinusOne=fibN;
}
return fibN;
}
/*测试用例包括:边界值测试(0,1,2),功能测试(5,7,8等),性能测试(较大的数40,100等)*/
面试题9 斐波那契数列
最新推荐文章于 2022-04-27 11:28:59 发布