如何简化这段Python递归代码?解决栈溢出问题
修复栈溢出:将递归计数逻辑改为循环实现
原代码因递归调用open_task和restart导致栈溢出错误,以下是改为循环实现的版本,完全保留原有「计数到21后重启、异常时重试」的功能:
import time def main(): while True: task_counter = 0 while task_counter < 21: try: task_counter += 1 print(task_counter) time.sleep(1) except: # 捕获异常后继续当前计数步骤,与原逻辑一致 pass # 计数完成后等待2秒,进入下一轮循环(模拟重启) time.sleep(2) if __name__ == "__main__": main()
关键修改说明
- 用外层
while True循环替代原restart的递归调用,避免每次重启向调用栈添加新帧,从根源解决栈溢出问题 - 用内层
while循环替代open_task的递归计数,消除递归带来的栈压力 - 移除嵌套函数结构,代码更简洁易读
- 异常处理逻辑完全保留:捕获异常后不中断计数流程,继续执行
内容的提问来源于stack exchange,提问作者dxUser
相关产品推荐
相关产品推荐

