青蛙跳台阶

今天,我将为大家带来青蛙跳台阶的程序,分别以递归和非递归进行实现,话不多说,直接开始主题。



青蛙跳台阶游戏讲解

问题描述:在青蛙的面前有N个台阶,而且青蛙每次都只能跳1~2级的台阶,那么请问,青蛙有多少种方法可以跳上N级的台阶。

假设我们的台阶最开始有1级,那么毫无疑问,青蛙只能以一种方法跳上台阶。

假设我们有二级台阶,那么青蛙便可以有两种方法来到我们的台阶顶部。第一种,青蛙一级一级跳到顶部;第二种,青蛙直接跳两级来到顶部。

假设我们有三级台阶,那么青蛙就有三种方法跳到台阶顶部。第一种,选择一级一级跳到顶部;第二种,选择先跳两级台阶,再跳一级台阶来到顶部;第三种,选择先跳一级台阶,再跳两级台阶来到顶部。

假设我们有四级台阶,那么青蛙就有五种方法来到顶部。第一种,一级一级跳到顶部;第二种,先跳两次一级,再跳一次两级;第三种,先跳一次二级,再跳两次一级;第四种,先跳一级,再跳两级,再跳一级;第五种,直接跳两次两级。

当N为1时,方法为1;
当N为2时,方法为2;
当N为3时,方法为3;
当N为4时,方法为5;



观察可以得知,当有N级台阶时,方法为有N-1的台阶和N-2的台阶方法之和。



递归实现青蛙跳台阶

#include<stdio.h>
int frog (int n)
{
    if(n==1)
	{
	    return 1;
	}
	else if(n==2)
	{
	    return 2;
	}
	else
	{
	    return frog(n-1)+frog(n-2);
	}
}
int main ()
{
	int N = 0;
	int ret = 0;
	scanf("%d",&N);
	ret = frog(N);
	printf("%d",ret);
    return 0;
}


非递归实现青蛙跳台阶

```c
#include<stdio.h>
int frog (int n)
{
    int a = 1;
	int b = 2;
	int c = 0;
	if(n==1)
	{
	    return a;
	}
	else if(n==2)
	{
	    return b;
	}
	else
	{
	    while(n>=3)
		{
			c = a + b;
		    a = b;
			b = c;
			n--;
		}
		return c;
	}
}
int main ()
{
	int N = 0;
	int ret = 0;
	scanf("%d",&N);
	ret = frog(N);
	printf("%d",ret);
    return 0;
}

如果觉得写得不错,关注点一点,下期更精彩。

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值