内容:
一只青蛙一次可以跳上一级台阶,也可以跳上二级台阶。求该青蛙跳上n级台阶共有多少种跳法。
题目分析:
先简单考虑。如果只有1级台阶,那么只有一种跳法,如果是2级台阶,那么有两种跳法。我们把n级台阶的跳法当成一个函数f(n),那么当n级台阶,n>2时,每次跳台阶都有两种不同的跳法:一是跳1级,此时的跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1),二是跳2级,此时的跳法数目等于后面剩下的n-2级台阶的跳法数目.所以n级台阶的不同跳法的总数f(n)=f(n-1)+f(n-2),相当于菲波那切数列。
代码实现:
int F(int n)
{
int F1 = 1;
int F2 = 0;
int F3 = 0;
if (n==1)
return 1;
if (n == 2)
return 2;
while (n>2){
F3 = F1 + F2;
F2 = F1;
F1 = F3;
n--;
}
return F3;
}