1.初级版:
题目:从前有一只青蛙他想跳台阶,有n级台阶,青蛙一次可以跳1级台阶,也可以跳2级台阶;问:该青蛙跳到第n级台阶一共有多少种跳法。
//从0加到n和从n减到0没啥区别
#include<stdio.h>
int count = 0;//创建全局变量来统计个跳法个数
void frog(int n)
{
if (n == 0)//当台阶数为0是跳法个数加1
count++;
else if (n < 0);
else
{
frog(n - 1);
frog(n - 2);
}
}
int main()
{
int n;
printf("请输入台阶个数:");
scanf("%d", &n);
frog(n);
printf("一共有%d种跳法\n", count);
return 0;
}
#include<stdio.h>
//求第n级台阶时青蛙跳法个数
int frog_jump_step(int n)
{
//特殊情况处理
if (n == 1)
{
return 1;
}
if (n == 2)
{
return 2;
}
//递归调用
return frog_jump_step(n - 1) + frog_jump_step(n - 2);
}
int main()
{
int n = 0;
printf("请输入青蛙所要跳的台阶数:");
scnaf("%d", &n);
int num = frog_jump_step(n);
printf("一共有%d种跳法\n", num);
return 0;
}
2.进阶版:
题目: 从前有一只青蛙想跳台阶去等峰,若该青蛙一次可以跳上1级台阶、也可以跳上2级……(n-1)级、n级。那么该青蛙跳上第n级的台阶时总共有多少种跳法。(前提是n个台阶会有一次n阶的跳法)
若n为n级台阶:
结合f(n-1)和f(n)的情况你会发现f(n) = f(n-1) + f(n-1),所以可得: f(n) = 2*f(n-1)。
#include<stdio.h>
int frog_jump_step(int n)
{
if (n < 0)
{
printf("n can't be less than 0\n");
}
if (n <= 1)
{
return 1;
}
return 2 * frog_jump_step(n - 1);
}
int main()
{
int n = 0;
printf("请输入青蛙该跳的台阶数:");
scanf("%d", &n);
int num = frog_jump_step(n);
printf("一共有种%d种跳法\n", num);
return 0;
}
这就是今天我带给大家的青蛙跳平台问题的讲解。
这份博客👍如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位🔎点赞👍评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧👀。