`

【100题】第二十七 跳台阶问题

 
阅读更多

一,题目:一个台阶总共有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下:

f(n)= 1 n=1
f(n)=2 n=2
f(n-1)+(f-2)n>2

分析到这里,相信很多人都能看出这就是我们熟悉的Fibonacci序列。

三,源码

输出结果为:8

1 2 3 5 8 ……

分享到:
评论
1 楼 naouguhtaeyeti 2012-05-21  
当台阶数大时,这个用递归效率太低

相关推荐

    完整学习笔记:《剑指offer》Java版代码实现

    目录 题号 题目及题解 测试示例 第二题 单例设计模式 测试2 第三题 二维码中找到目标值 测试3 第四题 替换字符串中的空格 测试4 第五题 从尾到头打印链表 测试5 ...第二十五题 二叉树中和为某值的路径

    程序员编程艺术第一 ~二十七章

    - **第二十七章:不改变正负数之间相对顺序重新排列数组** - 提供了一种高效的数组排序算法,时间复杂度为O(N),空间复杂度为O(1)。 #### 3. 作者态度 - **精益求精的态度**:作者团队对于已发表的内容始终保持...

    程序员编程艺术第一~二十七章集锦与总结

    - **第二十七章:不改变正负数之间相对顺序重新排列数组.时间O(N),空间O(1)** —— 提出了一种特殊的数组排序算法。 #### 四、创作背景与意义 - **创作背景**:此系列最初名为《程序员面试题狂想曲》,旨在为面试...

    程序员编程艺术--共二十七章-集锦与总结(教你如何编程)

    - **第二十七章:不改变正负数之间相对顺序重新排列数组** - 解决特定排序问题。 - 包括算法设计和性能分析。 #### 6. 社区互动 - **反馈机制**:鼓励读者提供反馈和建议,以不断完善内容。 - **合作邀请**:向有...

    程序员编程艺术第一~二十七章集锦与总结(教你如何编程)

    - **第二十七章:不改变正负数之间相对顺序重新排列数组** - **知识点**:数组操作、原地排序算法。 - **应用场景**:数组处理、数据清洗等。 #### 3. 作者态度与展望 - **不断改进的态度**:作者团队表示将...

    javalruleetcode-play-leetcode:用程序解决leetcode的算法问题

    青蛙跳台阶问题 面试题11 旋转数组的最小数字 面试题12 矩阵中的路径 面试题13 机器人的运动范围 面试题14- I 剪绳子 面试题14- II 剪绳子 面试题15 二进制中1的个数 面试题16 数值的整数次方 面试题17 打印从1到...

    JavaSE笔试程序题(20180307)

    13. **青蛙跳台阶**:动态规划问题,f(n) = f(n-1) + f(n-2),初始条件为f(1)=1, f(2)=2。 14. **数字转十六进制**:使用Integer.toHexString()方法。 15. **判断子类和接口实现**:使用instanceof关键字和...

    江苏省溧水高级中学2017_2018学年高一物理上学期期中试题2018080203100

    2. **位移和路程的概念**:题目中的第二题涉及物理中的基本概念——位移和路程。位移是描述物体从起点到终点的直线距离,考虑方向;路程则是物体实际移动的轨迹长度,不考虑方向。例如,一个人先向东走2m,再向西走6...

    JAVA面试题及答案参考,JAVA面试前刷刷题

    跳台阶:本题考察了Java中的递归概念和应用场景,了解递归的基本概念和应用。 4. 快速排序 HJ3.明明的随机数:本题考察了Java中的排序算法和实现,了解排序算法的基本概念和应用。 5. 哈希表 HJ10.字符个数统计:本...

    部编版二年级语文上册期中考试题(全面).pdf

    - "与"的拼音是"yǔ",第二画是"丿",可组词为"参与"。 - "繁"的拼音是"fán",第十七画是"㇏",可组词为"繁华"。 - "荣"共10画,第五画是"丨",可组词为"光荣"。 3. 词语搭配: - 通过连线题,让学生掌握形容...

    java算法题指导手册

    #### 九、斐波那契数列的第n项(青蛙跳台阶) 斐波那契数列是一系列数字,其中每个数字是前两个数字的和。这个问题可以用递归解决,但由于递归会带来大量的重复计算,因此可以采用动态规划的方法来优化。 **示例:...

    世界500强面试题.pdf

    1.5.1. 跳台阶问题 .......................................................................................104 1.5.2. 左旋转字符串...........................................................................

    剑指offer(牛客网)

    9. 变态跳台阶:在基础跳台阶问题上的变种,每次可以跳不同的台阶数,求出跳上n阶台阶有多少种跳法。 10. 矩阵覆盖:使用2*1的矩形块覆盖2*n的方格,求出有多少种不同的覆盖方法。 11. 二进制中1的位数:计算一个...

    leetcode分类-nowcoder:牛客网学习,包括剑指offer,程序员面试金典,leetcode,公司模拟真题,数据结构等

    09跳台阶 09变态跳台阶 09矩阵覆盖 10二进制中1的个数 11数值的整数次方 14调整数组顺序使奇数位于偶数前面 15链表中倒数第k个结点 16反转链表 17合并两个排序的链表 18树的子结构 19二叉树的镜像 20顺时针打印矩阵 ...

    丢失的最小正整数leetcode-Java_DataStructure:Java的数据结构和算法的学习

    8、跳台阶 9、变态跳台阶 10、矩形覆盖 11、二进制中1的个数 12、数值的整数次方 13、调整数组顺序使奇数位于偶数前面 14、链表倒数第k个节点 15、反转链表 16、合并两个排序列表 17、树的子结构 18、二叉树的镜像 ...

    《剑指Offer》Java代码(高清带目录) (1).pdf

    9. 斐波那契数列的应用:斐波那契数列在计算机科学和算法中有广泛应用,如9.1输出斐波那契数列的第n项,9.2青蛙跳台阶问题等。 10. 二进制中1的个数:主要考察位运算的技巧,以及如何在不使用循环的情况下计算一个...

Global site tag (gtag.js) - Google Analytics