当前位置:网站首页>青蛙跳台阶
青蛙跳台阶
2022-08-09 13:32:00 【GD_small_bit】
今天,我将为大家带来青蛙跳台阶的程序,分别以递归和非递归进行实现,话不多说,直接开始主题。
青蛙跳台阶游戏讲解
问题描述:在青蛙的面前有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;
}
如果觉得写得不错,关注点一点,下期更精彩。
边栏推荐
猜你喜欢

(PC+WAP)带手机端pbootcms模板农业种植类网站

Jetpack Compose - the use of Image (picture)

*3-2 CCF 2014-09-2 画图

笔试题记录~~

*1-4 OJ 605 格雷码

Analysis of SEATA Distributed Transaction Framework

记一次 ERROR scheduler.AsyncEventQueue: Dropping event from queue shared导致OOM

现实版商战:“武功再高,也怕菜刀”

汇编语言学习(四)

Row of openharmony container components
随机推荐
C语言中的运算符(超全超详细)
图解LeetCode——1413. 逐步求和得到正数的最小值(难度:简单)
【翠花学习单例模式】项目框架升级之单例模式及统一异常处理
从荷兰国旗问题到快排优化升级
ELK部署
Jetpack Compose - remember, mutableStateOf, rememberSaveable
Badge of openharmony container components
System Scalability Thinking
#25-1 OJ 78 计算生日星期几
源码编译安装LAMP
*3-4 CCF 2014-09-3 字符串匹配
openharmony容器组件之Badge
曾毓群想做王传福
*2-2 OJ 1163 导弹拦截之测试版
*1-2 OJ 190 游程编码
Where to go to IOE-EBS
Flex for openharmony container components
C语言 一维数组和二维数组的定义及使用
11. cuBLAS Development Guide Chinese version--Level-1 functions amax() and amin() in cuBLAS
Spark Sql之union