假设你正在爬楼梯。需要 n 步你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?求n=13的结果 提示:利用递归函数的思想编写程序
时间: 2023-11-13 14:07:09 浏览: 174
问题描述:有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。
5星 · 资源好评率100%
这是一个经典的递归问题,假设到达第 n 步的方法数为 f(n),那么可以分两种情况考虑:
1. 最后一步只跨了 1 个台阶,那么前面就必须跨了 n-1 个台阶,方法数为 f(n-1)。
2. 最后一步跨了 2 个台阶,那么前面就必须跨了 n-2 个台阶,方法数为 f(n-2)。
因此总的方法数为 f(n) = f(n-1) + f(n-2)。这是一个典型的斐波那契数列问题,可以使用递归函数求解。
Python 代码如下:
```python
def climbStairs(n: int) -> int:
if n == 1:
return 1
if n == 2:
return 2
return climbStairs(n-1) + climbStairs(n-2)
n = 13
print(climbStairs(n)) # 输出结果为 377
```
注意,递归算法的时间复杂度为 O(2^n),当 n 较大时,会非常慢。可以使用动态规划或者递推算法优化。
阅读全文