java爬楼梯问题:爬楼梯时 ,每一步会有两个选择:爬一个台阶和爬两个台阶 , 问:楼梯总台阶数为n,则一共有多少种爬法,写一个函数f,使得:总的爬法=f(n)。举例: n=3时,则共有: ( 1,1,1)、(1,2)、(2,1)三种爬法 ,则f(3)=3。
时间: 2024-09-13 15:04:00 浏览: 64
在 Java 中,这个问题通常被称为“爬楼梯”动态规划问题。这是一个经典的递归问题,可以用动态规划的方法来解决,因为它涉及到了状态转移方程。思路是定义一个数组 `f`,其中 `f[i]` 表示到达第 `i` 个台阶的不同方法数。
函数 `f(n)` 可以通过以下递推关系来计算:
- 如果可以直接达到第 `n` 个台阶,那么只有 `f[n-1]` 种方法(因为前一步只能是一个台阶);
- 否则,有两种情况:要么从第 `n-2` 个台阶走两步上来,要么从第 `n-1` 个台阶走一步上来,所以 `f(n)` 等于 `f[n-2]` 加上 `f[n-1]`。
递归形式的函数可以这样表示:
```java
public int climbStairs(int n) {
if (n <= 1) {
return n;
} else {
return climbStairs(n - 1) + climbStairs(n - 2);
}
}
```
对于给定的输入 `n`,你可以直接调用这个函数得到结果。例如,`f(3)` 的确会返回 3,就像题目中的例子所示。
阅读全文