青蛙跳台阶问题

今天我们来聊聊青蛙跳台阶问题,为题如下:
从前有一只青蛙他想跳台阶,有n级台阶,青蛙一次可以跳1级台阶,也可以跳2级台阶;问:该青蛙跳到第n级台阶一共有多少种跳法?

我们拿到问题之后往往不要慌,我们先来把前几次台阶数较少的画图来分析一下
假设当n = 1,只有一个台阶,那么就只有一种跳法
在这里插入图片描述

那么当n = 2的时候呢?青蛙可以先跳一次,再跳一次。也可以直接两个直接跳上去,所以有2种跳法
在这里插入图片描述
那么当n = 3的时候呢?又是几种?按照同样的方法来数一下
在这里插入图片描述
接下来当n = 4的时候,你会发现,他第一步有两种跳法,你跳了1步那么接下来剩下3个台阶,就是n = 3的情况,而n = 3的情况,我们上面也分析过了。如果你第一步跳2个台阶呢?那剩下来的就是2个台阶,就是n = 2的情况,我们上面也分析过,以此类推…
在这里插入图片描述

我们就可以发现,当取n个台阶的时候,我们都可以把他用n - 1和n - 2个台阶的跳法来表示,所以我们可以得到当n = 4的时候,一共有(n = 3)+(n = 2) = 5种跳法,n = 5的时候,一共有(n = 4)+(n = 3) = 8种跳法,这就得出了,本道题其实就是一种斐波那契数列
在这里插入图片描述
从第三个台阶开始都为第n-1和n-2个台阶跳法之和。所以我们能列出下面的公式:
在这里插入图片描述
分析到这,我们就能用代码来实现本道题的结果,运用函数的递归即可

//青蛙跳台阶问题 -- 递归

int frog_step(int n)
{
	if (n == 1)
		return 1;
	else if (n == 2)
		return 2;
	else
		return frog_step(n - 1) + frog_step(n - 2);
}

int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = frog_step(n);
	printf("%d\n", ret);
	return 0;
}

当我们输入n = 5的时候的出来结果为8
在这里插入图片描述
这样就把青蛙跳台阶问题解答完毕,就是一个起始值从1和2开始的斐波那契数列。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值