C语言实现青蛙跳台阶问题

本文探讨了青蛙跳台阶问题,当青蛙每次可以跳一个或两个台阶时,如何计算出跳上n个台阶的不同方法数。通过递归法和循环法两种方式给出解决方案。递归法虽然直观但效率较低,而循环法则更适用于大规模台阶数的计算。循环法通过保存前两个台阶的跳法数,不断更新并累加得到最终结果。
摘要由CSDN通过智能技术生成


青蛙跳台阶,一次一个台阶或者一次跳两个台阶,问跳n个台阶有多少次跳法。

先找规律

在这里插入图片描述画图找规律

我们可以看出当台阶数小于等于2时,跳法次数就是台阶数
当台阶数大于3时,跳法次数就是前两个台阶数跳法相加。
得出函数
n<=2 f(a) = n
n>2 f(a) = f(n-1)+f(n-2)

递归法(不建议,如果台阶数值太大,计算速度会很慢)

int g_Jump(int x)
{
	if (x<3)
	{
		return x;//台阶数小于3时,跳法就是台阶数
	}
	return g_Jump(x - 1) + g_Jump(x - 2);//大于等于3时该跳法就是前一个台阶的跳法加上第倒数第二的跳法之和。
}

循环法

在这里插入图片描述
第三个数等于前两个数相加,以此类推赋值
c = a + b;
a = b;
b = c
从3开始到n结束开始遍历这个循环,最终返回的c就是第n台阶的跳法。

int g_Jump(int n)
{
	if (n <3)
	{
		return n;//台阶数小于3时,跳法就是台阶数
	}
	int a = 1;
	int b = 2;
	int c = 0;
	for (int i = 3; i < n+1; i++)
	{
		c = a + b;
		a = b;
		b = c;
	}
	return c;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值