青蛙跳台阶问题

目录

1.题目

2.分析

2.1类比斐波那契数列

 3.代码示例

4.思路总结


1.题目

从前有一只青蛙他想跳台阶,有n级台阶,青蛙一次可以跳1级台阶,也可以跳2级台阶;问:该青蛙跳到第n级台阶一共有多少种跳法?

2.分析

因为青蛙每次只能跳一个台阶或两个台阶,因此可先对两种比较简单的情况分析:

跳一个台阶毫无疑问只有一种情况:一次跳一个;

跳两个台阶有两种情况:每次跳一个和一次跳两个;

2.1类比斐波那契数列

青蛙跳一个台阶有一种跳法

青蛙跳两个台阶有两种跳法

青蛙跳三个台阶?

青蛙跳三个台阶,它第一跳无非两种情况:跳一阶和跳两阶

若跳了一阶,则还剩两阶,那么就是跳两个台阶的情况;

若跳了两阶,则还剩一阶,那么就是跳一个台阶的情况;

因此跳三个台阶时相当于先分类再相加前两种情况

即跳三个台阶=跳一个台阶+跳两个台阶。

同理,青蛙跳四个台阶:

若跳了一阶,则还剩三阶,那么就是跳三个台阶的情况;

若跳了两阶,则还剩两阶,那么就是跳两个台阶的情况;

即跳四个台阶=跳两个台阶+跳三个台阶。

........

既然跳n个台阶的种数可以等于跳n-1个台阶的种数加上跳n-2个台阶的种数,那么可以将这个问题转换为类似斐波那契数列来解决。即n=(n-1)+(n-2)


 3.代码示例

#include<stdio.h>
int Jump(int n)
{
	if (n == 1)
		return 1;
	else if (n == 2)
		return 2;
	else
	{
		return Jump(n - 1) + Jump(n - 2);
	}
}
int main()
{
	int n;
	printf("请输入台阶数:");
	scanf("%d", &n);
	int ret = Jump(n);
	printf("共有%d种跳法。", ret);
	return 0;
}

4.思路总结

解决问题时应当抓住问题的关键。

1.青蛙每次只能跳一个台阶或两个台阶;

2.输入的是台阶数,输出的数有多少种跳法。

3.善于用数学模型解决问题(如列举,转化为斐波那契数列等)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值