C语言-青蛙跳台阶问题【递归+非递归】
青蛙跳台阶问题【递归+非递归】
- 问题描述
- 分析
- 递归实现
- 非递归实现
问题描述
一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。
分析
n - 台阶数
sum - 跳发
n | sum |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 5 |
5 | 8 |
6 | 13 |
7 | 21 |
8 | 34 |
9 | 55 |
10 | 89 |
…… | …… |
n-2 | f(n-2) |
n-1 | f(n-1) |
n | f(n-1)+f(n-2) |
可参考斐波那数
递归实现
//1 2 3 5 8 13 21 34 55 89 ……
//递归实现
int D_Frog_jump(int n)
{if (n <3)return n;elsereturn D_Frog_jump(n - 1) + D_Frog_jump(n - 2);
}
int main()
{int n = 0;int ret = 0;printf("请输入青蛙要跳的台阶数:");scanf("%d", &n);ret = D_Frog_jump(n);//ret = FD_Frog_jump(n);printf("%d\n", ret);return 0;
}
非递归实现
//非递归实现
int FD_Frog_jump(int n)
{int res = 2;int pre_res = 1;int next_older_res = 0;while (n > 2){next_older_res = pre_res;pre_res = res;res = pre_res + next_older_res;n--;}return res;
}
C语言-青蛙跳台阶问题【递归+非递归】相关推荐
- 研究青蛙跳台阶问题区别函数递归与迭代
文章目录 前言 一.什么是青蛙跳台阶问题 二.使用递归和迭代(非递归)的区别 1.递归实现 2.迭代(非递归) 前言 青蛙跳台阶问题是函数递归的经典问题,也是求斐波那契数的变式,通过研究非递归(迭代) ...
- 青蛙跳台阶问题详解 递归思想
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 示例1: 输入1 返回值1 示例2: 输入4 返回值5 思想: 经典递 ...
- C语言——青蛙跳台阶问题详解(递归)
- C语言 - 递归之青蛙跳台阶详解(这货就是个斐波那契数列)
什么是青蛙跳台阶问题? 一只青蛙可以一次跳 1 级台阶或一次跳 2 级台阶,如果台阶数为n,那么这只青蛙有多少种跳法? 电影<少年班>中有这样一个片段,导师周知庸寻找智力超群的少年时遇到了 ...
- C语言递归问题【青蛙跳台阶】和【汉诺塔】
青蛙跳台阶 题目要求:一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级.求该青蛙跳上一个n 级的台阶总共有多少种跳法? 分析: 当n为1时,有1种方法: 当n为2时,有2种方法: 当n为3时,有3种 ...
- 深度理解递归,手撕经典递归问题(汉诺塔,青蛙跳台阶),保姆级教学。
目录 序言: 一.函数递归( recursion) 二.递归的两个必要条件 三.递归小问题 (1)接受一个整型值(无符号),按照顺序打印它的每一位 (2)编写函数不允许创建临时变量,求字符串的长度(利 ...
- 由递推关系式用差分方程的方法得到通项公式实现求斐波那契数列的第n项;迭代、递归、栈、差分方程之间的本质联系以及由推广的迭代法解决“变态青蛙跳台阶”问题;汉诺塔问题的数字特征以及用递归解决的原理推导。
最近几天在研究算法中一个比较基础且突出的问题,就是关于"递推关系式.递归.迭代.序列前k项和"之间的区别与联系. 一.斐波那契数列与差分方程 首先我们考察一个经典的算法,求斐波那契 ...
- 青蛙跳石头java_青蛙跳台阶(JAVA)与递归问题探究
青蛙跳台阶JAVA 一只青蛙一次可以跳上一层台阶,也可以跳上两层,求该青蛙跳上n层的台阶总共有多少种跳法(先后次序不同算不同的结果). 思考:可以看出,每次青蛙出脚都会有两种可能,一步或者两步,再次出 ...
- 汉诺塔问题以及青蛙跳台阶问题(附C语言代码)
汉诺塔问题: 汉诺塔问题的源于印度一个古老传说的益智玩具.大焚天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照先大后小的顺序摞着64片圆盘.大焚天命令婆罗门把圆盘从下面按大小顺序重新摆放在 ...
最新文章
- 网站预加载进度条的实现
- c# webrequest 自动登入网站
- 【解析】Alice and Bob_24行代码AC
- python指定变量类型_Python#160;变量类型_python教程
- qt5.4 for android,windows下Qt5.4.2 for android开发环境配置
- oracle双机python连接_Python 连接 Oracle 示例
- 51单片机控制电机正反转
- 2022电力电缆考试题及答案
- linux 开源网卡驱动,AMDGPU linux开源驱动
- Verilog实现的格雷码与二进制码的互相转换
- linux 下spi的使用 ,cc2500模块驱动
- 深入理解“智慧城市”
- SQL语句查询关键字
- Linux搭建Linpack环境测试GPU性能
- 谈谈mysql的悲观和乐观锁 - 周伯通的麦田 - 博客园
- Gym 101572 K.Kayaking Trip【二分+贪心】
- MySQL备份和恢复:mysqldump工具用法详述
- 人机对战的猜拳游戏,用户通过输 入(1.剪刀 2.石头 3.布),机器随机生成(1.剪刀 2.石头 3.布),胜者积分, n 局以后通过积分的多少判定胜负。
- el-input 不能输入的解决办法
- 500G的硬盘实际可用空间是多少?