C语言中递归经典例题求解青蛙跳台问题(函数递归+循环两种解法)图示过程+代码 与斐波那契数列的区别

相信青蛙跳台问题不少人都听说过

我第一次遇见还是在高中数学中排列组合遇到的

问题↓

一只青蛙一次能跳1个台阶或者两个台阶

求这只青蛙跳到n级台阶时有几种方法?

思路↓

当n=1时有一种跳法

当n=2时有两种跳法

当n>=3时 到n级台阶之前青蛙可能在n-1级也可能在n-2级 在n-1级时青蛙可能在n-2级也可能在n-3级这时思路可以借鉴斐波那契数列

本文我将带着大家剖析题目 通过递归与循环两种方式来求解


我也看了其他人的解法 但是我发现很多人直接照搬斐波那契数列的写法 但是我要明确的是他俩有一定的关系但不完全一样

接下来跟着我一起探寻吧

我们先写出递归求解代码

85a0ad3eded44775871a1b19f97bb96d.png

90118522c22a4015b53017b9056be94a.png 

 再写出斐波那契数列代码

447cd8e968fc4813b64f6ed92078e218.png

 e1570e03f80d4cd98d76a4b8e0e4d2ce.png

 我们可以显而易见的看到结果的不同

青蛙跳台的ret数列是1 2 3 5 8.....

斐波那契数列ret是 1 1 2 3 5 8.....

可以看到从第二个数开始错开一个这就是他俩的本质区别

对于递归的过程 我们来演示一下↓

这里为了方便以num==3为例

*递归是先传递后回归

0ff21ffe0f394c339f675b2720bb57a0.png

5c98babd860d4fe3ba7a2bcf98093ee1.png

下面我们来写循环求解的代码↓

c09616f38ada4d1598b2bb95d6629c89.png

 73b22a3d12b44967a93438b5120cffd4.png

 下面来写斐波那契数列的循环写法↓

bbfe051b4d284102b4afb5655e207963.png

 a15980aae88e4501ba4005835b514a29.png

可以看到代码的本质差异和运行结果的不同

总结

青蛙跳台可以是类似斐波那契数列 但不完全是 既可以递归求解也可以循环求解 但是各自优缺点 请看我上一章的分析

 

 

 

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值