题目一:求斐波那契数列的第n项
写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契数列的定义如下:
当n=0时,f(n)=0;
当n=1时,f(n)=1;
当n>1时,f(n)=f(n-1)+f(n-2);
从下往上计算,首先根据 f(0)和 f(1)算出 f(2),再根据 f(1)和 f(2)算出 f(3)……以此类推就可以算出第n项了。这种方法把递归的算法用循环实现,极大的提高了时间效率。时间复杂度为 O(n)。
非递归的方法,从下往上计算,代码实现如下:
long long Fibonacci(unsigned int n)
{
int result[2]={0,1};
if(n<2) return result[n];
long long fibNMinusOne=1;
long long fibNminusTwo=0;
long logn fibN=0;
for(unsigned int i=2;i<=n;++i)
{
fibN=fibNMinusOne+fibNminusTwo;
fibNminusTwo=fibNMinusOne;
fibNMinusOne=fibN;
}
return fibN;
}
测试用例:
a.功能测试(如输入3、5、10等)。
b.边界值测试(如输入0、1、2)。
c.性能测试(输入较大的数字,如40、50、100等)。
类似题:青蛙跳台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法。