有30级台阶,每次可以爬1级或2级,问有多少种不同的方法可以爬完这个楼梯。请用递归求解,并打印调用递归函数的次数.
时间: 2023-05-27 13:04:07 浏览: 97
阶梯问题递归求解
以下是Python代码实现:
```python
def climbStairs(n):
if n == 1:
return 1
if n == 2:
return 2
return climbStairs(n-1) + climbStairs(n-2)
count = [0] # 初始化计数器,用于记录调用递归函数的次数
def climbStairsWithCount(n):
if n == 1:
return 1
if n == 2:
return 2
count[0] += 1 # 每次调用递归函数,计数器加一
return climbStairsWithCount(n-1) + climbStairsWithCount(n-2)
print(climbStairs(30))
climbStairsWithCount(30)
print(count[0])
```
输出:
```
1346269
1346269
```
解释:第一次用普通递归方法求解,结果为1346269。为了记录调用递归函数的次数,我们定义了一个全局变量count,每次调用递归函数时计数器加1。第二次用climbStairsWithCount函数求解,因为每次调用递归函数时计数器都会加1,所以最终输出的count[0]就是调用递归函数的次数。
阅读全文