Python写个程序假设一段楼梯共 15 个台阶,小明一步最多能上 3 个台阶。编写程序计算小明上这段楼梯一共有多少种方法。要求给出递推法和递归法两种代码
时间: 2024-02-29 17:51:22 浏览: 110
Python实现上下班抢个顺风单脚本
5星 · 资源好评率100%
好的,我来分别给你展示递推法和递归法解决这个问题的Python代码。
递推法代码:
```python
num_steps = 15 # 台阶数
step_size = 3 # 每步最多上几个台阶
# 创建一个数组,用于存放每个台阶有多少种上法
ways_to_climb = [0] * (num_steps + 1)
ways_to_climb[0] = 1 # 初始条件,表示不爬也是一种方法
for i in range(1, num_steps + 1):
for j in range(1, step_size + 1):
if i >= j:
ways_to_climb[i] += ways_to_climb[i - j]
print(f"共有{ways_to_climb[num_steps]}种方法") # 输出结果
```
递归法代码:
```python
def climb_stairs(n, step_size):
if n == 0 or n == 1:
return 1
else:
total = 0
for i in range(1, step_size + 1):
if n >= i:
total += climb_stairs(n - i, step_size)
return total
num_steps = 15 # 台阶数
step_size = 3 # 每步最多上几个台阶
ways_to_climb = climb_stairs(num_steps, step_size)
print(f"共有{ways_to_climb}种方法") # 输出结果
```
希望这两段代码能够帮到你。
阅读全文