【算法题】小兔子爬楼梯
发表于:2024-12-10
字数统计:632 字
预计阅读3分钟
介绍
小兔子想去月球上旅行,假设小兔子拥有一个 n 阶梯子,当你爬完 n 层就可以到达月球,小兔子每次可以跳 1 或者 2 个台阶,小兔子有多少种跳法可以到达月球呢?
给定 n 是一个正整数,代表梯子的阶数,当 n=2 时,小兔子有 2 种跳法到达月球;当 n=3 时,小兔子有 3 种跳法跳到月球,以此类推,解释如下图所示:

实现思路提示
这里为同学提供以下两种解题思路。
1. 递归
可以使用递归来实现,具体思路如下:
- 当阶梯数为 0 时,只有 0 种方法;当阶梯数为 1 时,只有 1 种方法;当阶梯数为 2 时,只有 2 种方法,所以当阶梯数 n 小于等于 2 时,可以直接返回值。
- 如果阶梯数大于 2,就递归。
2. 动态规划
可以使用动态规划来实现,具体思路如下:
- 当阶梯数 n 为 0 时,直接返回 0。
- 当阶梯数 n 为 1 时,直接返回 1。
- 当阶梯数大于 1 时,假设有 i 阶梯子需要爬,就有 dp[i] 中方法。
- 3 阶以上的梯子,都满足一个规律:dp[i] = dp[i-1] + dp[i-2]。
解题思路不只这两种,同学们可以自由发挥。
准备
本题已经内置了初始代码,打开实验环境,目录结构如下:
txt
├── js
│ └── index.js
└── index.html其中:
js/index.js是实现函数的 js 代码文件。index.html是显示结果的页面。
选中 index.html 右键启动 Web Server 服务(Open with Live Server),让项目运行起来。打开环境右侧的【Web 服务】,当前页面显示如下。

目标
请完善 index.js 文件中的代码,页面显示结果如下:

规定
- 请严格按照考试步骤操作,切勿修改考试默认提供项目中的文件名称、文件夹路径等。
- 满足题目需求后,保持 Web 服务处于可以正常访问状态,点击「提交检测」系统会自动判分。
总通过次数: 2214 | 总提交次数: 2246 | 通过率: 98.6%
难度: 简单 标签: 2022, 省模拟赛, Web 前端, JS 函数封装, 树
题解
js
const climbStairs = (n) => {
if (n === 0) {
return 0
}
if (n === 1) {
return 1
}
if (n === 2) {
return 2
}
return climbStairs(n - 1) + climbStairs(n - 2);
}