头歌python第3关:上台阶问题本关任务:小猴子一次可以跳1级台阶,也可以跳2级台阶,现在一共有 n 级台阶,请问小猴子从地面跳到第 n 级台阶一共有多少种跳法?
时间: 2024-09-20 19:17:40 浏览: 49
这是一个经典的动态规划问题,通常被称为“爬楼梯”问题。在Python中,我们可以利用递推的思想来解决。设`f(n)`表示到达第n级台阶的总方法数,那么有以下两种情况:
1. 如果最后一级是单步到达的,则前一级只能是`f(n-1)`,因为只有先到达n-1级才能一步跳到n级。
2. 如果最后一级是两步到达的,则前两级可能是`f(n-2)`,因为需要先跳到n-2或者n-1再跳一级到达n。
所以,状态转移方程是:
- `f(n) = f(n-1) + f(n-2)`,如果n>=2
初始条件是:
- `f(0) = 1`,表示从0级到0级只有一种方法(直接到达)
- `f(1) = 1`,表示从0级到1级也只有一种方法(直接跳)
可以用Python编写一个函数来计算总的跳法数:
```python
def climb_stairs(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
a, b = 1, 1 # 初始化前两项
for _ in range(2, n+1): # 从第三级开始循环
a, b = b, a + b # 更新a和b
return b # 返回最后的结果
# 示例
n = 3 # 输入台阶数
climb_stairs(n)
```
阅读全文