Python进阶:递归调用在错误处理中的应用实例
递归调用是 Python 中一种常见的解决问题的方法,尤其适用于需要重复分解的问题。然而,递归调用也可能引发错误,例如栈溢出(Stack Overflow)等。以下是一个递归调用在错误处理中应用的实例:
def factorial(n, stack=None):
# 初始化错误处理
if stack is None:
stack = []
# 基线条件:1的阶乘为1,直接返回结果
if n == 0 or n == 1:
return 1
# 错误处理:递归调用过程中检查栈是否已满
if stack and len(stack) >= MAX_STACK_SIZE: # 假设MAX_STACK_SIZE是一个常量
raise RecursionError("Stack Overflow occurred!")
# 正确的递归调用:n减1的阶乘乘以n
stack.append(n) # 将当前的n值压入栈中
result = factorial(n-1, stack) * n
stack.pop() # 弹出栈顶,即恢复到前一次的递归调用
# 使用示例,这里假设MAX_STACK_SIZE为10
try:
result = factorial(5)
except RecursionError as e:
print("Error:", e)
else:
print("Factorial of 5 is:", result)
在这个例子中,factorial()
函数递归地计算阶乘。错误处理部分检查递归调用过程中栈的大小,防止栈溢出引发的错误。
还没有评论,来说两句吧...