Java代码实现 一个楼梯,每次可以爬1级或者2级,请问有多少种方式爬到顶楼
时间: 2024-09-07 17:02:31 浏览: 40
这是一个经典的动态规划问题,通常被称为“爬楼梯”或“汉诺塔”变种。我们可以使用递归或迭代的方式来解决。这里我给出一个基于递归的Java解决方案:
```java
public class ClimbingStairs {
public int climbStairs(int n) {
if (n <= 2) { // 基本情况:0级、1级和2级楼梯只有一种走法
return n;
}
// 从第三级开始,考虑前两步的情况
int step1 = climbStairs(n - 1); // 走1级到达
int step2 = climbStairs(n - 2); // 走2级到达
// 通过加法得到总走法
return step1 + step2;
}
public static void main(String[] args) {
ClimbingStairs stairs = new ClimbingStairs();
int totalWays = stairs.climbStairs(5); // 比如计算5级楼梯的走法
System.out.println("共有 " + totalWays + " 种方式爬到第5级楼梯");
}
}
```
在这个代码里,我们假设有`n`级楼梯,每次只能上一级或两级。递归函数`climbStairs(n)`返回走到第`n`级的不同走法数。当`n`小于等于2时,直接返回`n`;大于2时,则是前一步和前两步的所有组合。
阅读全文