爬楼梯 2
难度:简单
描述:
一个小孩爬一个 n 层台阶的楼梯。他可以每次跳 1 步, 2 步 或者 3 步。实现一个方法来统计总共有多少种不同的方式爬到最顶层的台阶
本题跟爬楼梯一毛一样,只是多了可以一次跳三步,所以尽量自己做出来
样例:
n = 3,1 + 1 + 1 = 2 + 1 = 1 + 2 = 3 = 3,共有 4 种方法
思路分析:
这类题我们首先要来找其中的规律,找到了里面的规律,剩下的就好办了。
我再列举出几个结果:
1 | 1: 1 // 1种方法 |
查找样例中的规律:爬楼梯
代码模板:
1 | /** |
想一想再看答案
想一想再看答案
想一想再看答案
规律
除了前 3 阶楼梯是没有规律的,第 n 阶的楼梯的方法是第 i-1 、第 i-2 和第 i-3 阶楼梯所用方法的和。
规律都给你总结好了,再给你个机会自己做出来。
代码:
解题的核心就是逐步推导,推导出 n 前面的两个值。
- 递归
因为做过一遍,最先想起来的就是递归。
1 | const climbStairs2 = n => { |
- 交换变量
实际上我们只需要 n 之前的三个值,就可以求出 n 所用的方法,所以我们没必要将 n 之前的所有值都推导出来。
1 | const climbStairs2 = k => { |
- 数组形式:
1 | const climbStairs2 = function(n) { |
鼓励我一下:
觉得还不错的话,给我的项目点个star吧