今天与大家分享一下递归的经典题目--青蛙跳台阶问题。
一.引子
电影《少年班》🍗中的老师在全国各地寻找天才少年时,就问了一个这样的问题,有20阶台阶,每次只能上一阶或两阶,总共有多少种上法?这个少年王大法算了一卦,当即回答出一万零九百四十六种,10946种。然后就被录进中科院了。我们可能没有王大法这么聪明,但是我们程序猿有电脑呀!通过编程,了解一定的算法,让计算机给我们解决,这样也很好呀。⭐
二.问题描述
一只青蛙跳一次只能跳1级台阶或跳2级台阶。
求:该青蛙跳上第n级台阶总共有多少种跳法?
三.思路分析
假设,跳到第n阶台阶有f(n)种跳法,
通过归纳,我们可以发现:f(n)=f(n-1)+f(n-2)
与斐波那契数列相似,而斐波那契数列我们是熟悉的。
台阶数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | n |
多少种 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | f(n-1)+f(n-2) |
四.代码实现
int Frog(int n)
{
if (n == 1)
return 1;
else if (n == 2)
return 2;
else
return Frog(n - 1) + Frog(n - 2);
}
int main()
{
int n;
printf("请输入台阶数\n");
scanf("%d", &n);
Frog(n);
printf("台阶数是%d,一共有%d种跳法", n, Frog(n));
return 0;
}
五.运行结果
创作不易, 如果这份博客👍对你有帮助,可以给博主一个免费的点赞以示鼓励。
欢迎各位帅哥美女点赞👍评论⭐收藏⭐,谢谢!!!
如果有什么疑问或不同的见解,欢迎在评论区留言哦👀。
祝各位生活愉快⭐