爬楼梯问题:爬楼梯时 ,每一步会有两个选择:爬一个台阶和爬两个台阶 , 问:楼梯总台阶数为n,则一共有多少种爬法,写一个函数f,使得:总的爬法=f(n)。举例: n=3时,则共有: ( 1,1,1)、(1,2)、(2,1)三种爬法 ,则f(3)=3。
时间: 2024-09-13 18:04:01 浏览: 145
c语言基础-c语言编程基础之动态规划示例-爬楼梯.zip
爬楼梯问题是一个经典的动态规划问题,通常称为“斐波那契数列”变体,因为它的解可以用递推公式来表示。对于给定的楼梯总台阶数 \( n \),我们需要计算从0步到 \( n \) 步的所有组合。当 \( n \) 小于等于2时,只有一种爬法;从第三步开始,每增加一个台阶,就相当于前两步的选择之一加上直接跨过两步。
我们可以定义一个函数 \( f(n) \) 来计算爬法总数,其递推关系可以表达为:
- 当 \( n = 0 \) 或 \( n = 1 \) 时,\( f(n) = 1 \)
- 对于 \( n > 1 \),\( f(n) = f(n - 1) + f(n - 2) \),即前一步和前两步的爬法之和
这个过程可以用Python等语言编写成如下的函数形式:
```python
def climb_stairs(n):
if n <= 1:
return n
else:
a, b = 1, 1 # 初始化前两步的解
for _ in range(2, n+1): # 遍历剩余台阶
a, b = b, a + b # 更新解
return b # 返回最终的爬法数
# 示例
print(climb_stairs(3)) # 输出:3
```
阅读全文