用java编译以下程序,只使用简单函数:台阶有n级,可以一次走一级,也可以一次走两级,问共有多少种走法。
时间: 2024-11-15 18:24:37 浏览: 23
这个问题描述的是著名的“爬楼梯”问题,可以用动态规划来解决。在Java中,我们可以创建一个数组来存储每个阶数到目标阶数的不同走法数。以下是简单的实现:
```java
public class ClimbingStairs {
public int climbStairs(int n) {
// 初始化数组,dp[i] 表示到达第 i 级台阶的不同走法数
int[] dp = new int[n + 1];
dp[0] = 1; // 到达第一级台阶只有1种方法:一步上去
dp[1] = 1; // 到达第二级台阶也只有1种方法:两步上去
// 对于大于1的阶数,有两种情况:之前一步走或两步走
for (int i = 2; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2]; // 选择任意一种走法,加总到当前位置的方法数
}
// 返回到达目标阶数的方法总数
return dp[n];
}
public static void main(String[] args) {
int stairs = 5; // 可以替换为实际的台阶数
System.out.println("Total ways to climb " + stairs + " steps: " + new ClimbingStairs().climbStairs(stairs));
// 相关问题:
// 1. 这个动态规划的思路是如何工作的?
// 2. 当n很大时,这种方法的效率如何?
// 3. 如果不允许走两步,结果会有怎样的变化?
}
}
```
阅读全文