100题_23 跳台阶问题
2011-03-13 11:57
375 查看
一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。
首先我们考虑最简单的情况。如果只有1级台阶,那显然只有一种跳法。如果有2级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1级;另外一种就是一次跳2级。现在我们再来讨论一般情况。我们把n级台阶时的跳法看成是n的函数,记为f(n)。当n>2时,第一次跳的时候就有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另外一种选择是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2)。因此n级台阶时的不同跳法的总数f(n)=f(n-1)+(f-2)。
总结一下,得到递推公式:
这一看,我们就可以看出,这其实就是斐波那契级数,前面已经讨论过,请点这里查看详情。
首先我们考虑最简单的情况。如果只有1级台阶,那显然只有一种跳法。如果有2级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1级;另外一种就是一次跳2级。现在我们再来讨论一般情况。我们把n级台阶时的跳法看成是n的函数,记为f(n)。当n>2时,第一次跳的时候就有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另外一种选择是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2)。因此n级台阶时的不同跳法的总数f(n)=f(n-1)+(f-2)。
总结一下,得到递推公式:
这一看,我们就可以看出,这其实就是斐波那契级数,前面已经讨论过,请点这里查看详情。
相关文章推荐
- 程序员面试题精选100题(23)-跳台阶问题
- 程序员面试题精选100题(23)-跳台阶问题
- 程序员面试题精选100题(23)-跳台阶问题
- 程序员面试题精选100题(23)-跳台阶问题[算法]
- 程序员面试题精选100题(23)-跳台阶问题[算法]
- IT公司100题-27-跳台阶问题
- 程序员面试100题之二:跳台阶问题(变态跳台阶)
- "100 个台阶"问题的 4 种解法
- 跳台阶问题 【微软面试100题 第二十七题】
- 程序员面试题100题第23题——跳台阶问题
- 23. 微软面试题:跳台阶问题
- 微软100题(27)下台阶问题
- JAVA问题总结之23--生成一个长度为100的随机整数list
- 递归-微软面试100题-台阶问题
- 程序员面试题精选(23):跳台阶问题
- 程序员面试100题之二:跳台阶问题(变态跳台阶)
- 【100题】第二十七 跳台阶问题
- 微软面试100题之27题:跳台阶问题
- 23.跳台阶问题[Fib]
- 程序员面试题100题第23题——跳台阶问题