Skip to content

【算法题】小兔子爬楼梯

作者:江月迟迟
发表于:2024-12-10
字数统计:632 字
预计阅读3分钟

介绍

小兔子想去月球上旅行,假设小兔子拥有一个 n 阶梯子,当你爬完 n 层就可以到达月球,小兔子每次可以跳 1 或者 2 个台阶,小兔子有多少种跳法可以到达月球呢?

给定 n 是一个正整数,代表梯子的阶数,当 n=2 时,小兔子有 2 种跳法到达月球;当 n=3 时,小兔子有 3 种跳法跳到月球,以此类推,解释如下图所示:

img

实现思路提示

这里为同学提供以下两种解题思路。

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);
}