0
点赞
收藏
分享

微信扫一扫

青蛙跳台阶问题【详解】

沪钢木子 2022-05-03 阅读 175
c语言

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;
}

  这就是今天我带给大家的青蛙跳平台问题的讲解。

这份博客👍如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位🔎点赞👍评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧👀。

举报

相关推荐

0 条评论