相信青蛙跳台问题不少人都听说过
我第一次遇见还是在高中数学中排列组合遇到的
问题↓
一只青蛙一次能跳1个台阶或者两个台阶
求这只青蛙跳到n级台阶时有几种方法?
思路↓
当n=1时有一种跳法
当n=2时有两种跳法
当n>=3时 到n级台阶之前青蛙可能在n-1级也可能在n-2级 在n-1级时青蛙可能在n-2级也可能在n-3级这时思路可以借鉴斐波那契数列
本文我将带着大家剖析题目 通过递归与循环两种方式来求解
我也看了其他人的解法 但是我发现很多人直接照搬斐波那契数列的写法 但是我要明确的是他俩有一定的关系但不完全一样
接下来跟着我一起探寻吧
我们先写出递归求解代码

再写出斐波那契数列代码


我们可以显而易见的看到结果的不同
青蛙跳台的ret数列是1 2 3 5 8.....
斐波那契数列ret是 1 1 2 3 5 8.....
可以看到从第二个数开始错开一个这就是他俩的本质区别
对于递归的过程 我们来演示一下↓
这里为了方便以num==3为例
*递归是先传递后回归

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


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


可以看到代码的本质差异和运行结果的不同
总结
青蛙跳台可以是类似斐波那契数列 但不完全是 既可以递归求解也可以循环求解 但是各自优缺点 请看我上一章的分析

697

被折叠的 条评论
为什么被折叠?



