1.题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法?
示意图

2.思考分析
青蛙从地面开始跳,具体如下:
如果只有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)
3.C语言实现代码
//青蛙跳台阶问题
#include <stdio.h>
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;
}
谢谢欣赏!!
本文详细解析了青蛙跳台阶问题,通过分析得出递归公式,并使用C语言实现了递归算法。该问题是一个经典的动态规划案例。
&spm=1001.2101.3001.5002&articleId=113525152&d=1&t=3&u=2029c3bca44e4e2c965d81e6c8c30148)
2150

被折叠的 条评论
为什么被折叠?



