一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法?
示意图
青蛙从地面开始跳,具体如下:
如果只有1级台阶,那显然只有一种跳法。
*如果有2级台阶,那么就有2种跳法,一种是分2次跳,每次跳1级,另一种就是一次跳2级。
跳n级台阶的跳法:
从第一级台阶再开始跳,F(n1)=F(n-1)*1
从第二级台阶再开始跳,F(n2)=F(n-2)*2
但是注意,F(2)中1 1的跳法与F(1)中 1的跳法重复
所以计算时,F(n2)=F(n-2)*1
F(n)=F(n1)+F(n2)=F(n-1)+F(n-2)
得到递推关系式 F(n)=F(n-1)+F(n-2)
//青蛙跳台阶问题
#include
int Fun(int n)
{
if (n == 1)
return 1;
else if (n == 2)
return 2;
else if (n>2)
return Fun(n - 1) + Fun(n - 2);
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret=Fun(n);
printf("%d\n", ret);
return 0;
}
谢谢欣赏!!