递归调用过深或栈溢出:Python递归示例及其风险
递归是一种编程技术,其中函数通过调用自身来解决问题。然而,如果递归调用过深,或者递归过程中没有正确地更新栈信息(如在C++中使用std::stack
),都可能导致栈溢出。
下面是一个简单的Python递归示例,计算阶乘:
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n-1)
print(factorial(5)) # 这将导致栈溢出
在这个例子中,如果我们试图计算factorial(6)
,递归调用的深度将会非常大,超过了Python默认的最大递归深度,从而引发栈溢出错误。
还没有评论,来说两句吧...