python递归函数使用装饰器
时间: 2024-01-08 17:19:04 浏览: 86
可以使用装饰器来限制Python递归函数的深度。下面是一个使用装饰器来限制递归深度的例子:
```python
import sys
sys.setrecursionlimit(1000) # 设置递归深度为1000
def limit_depth(func):
def wrapper(*args, **kwargs):
if sys.getrecursionlimit() <= 0:
raise RecursionError("超出最大递归深度")
sys.setrecursionlimit(sys.getrecursionlimit() - 1)
result = func(*args, **kwargs)
sys.setrecursionlimit(sys.getrecursionlimit() + 1)
return result
return wrapper
@limit_depth
def recursion(n):
if n == 1:
return 1
return n * recursion(n-1)
print(recursion(5)) # 输出:120
```
在上面的例子中,`limit_depth`是一个装饰器函数,它将递归深度限制为1000。`recursion`函数是一个递归函数,它计算n的阶乘。通过在`recursion`函数上使用`@limit_depth`装饰器,可以限制递归深度并避免递归深度过大导致的栈溢出错误。
阅读全文