python内存不足递归_python - Python中的最大递归深度是多少,以及如何增加? - 堆栈内存溢出...

===============>>#1 票数:394 已采纳

是的,它可以防止堆栈溢出。 Python(或更确切地说,CPython实现)无法优化尾部递归,并且无限制的递归会导致堆栈溢出。 您可以检查与递归限制sys.getrecursionlimit和更改与递归限制sys.setrecursionlimit ,但这样做是危险的-标准限值是有点保守,但是Python stackframes可以说是相当大的。

Python不是一种功能语言,尾部递归并不是一种特别有效的技术。 如果可能的话,迭代地重写算法通常是一个更好的主意。

===============>>#2 票数:111

import sys

sys.setrecursionlimit(1500)

===============>>#3 票数:50

这是为了避免堆栈溢出。 Python解释器限制了递归的深度,以帮助您避免无限递归,从而导致堆栈溢出。 尝试增加递归限制(sys.setrecursionlimit)或不递归地重写代码。

sys.getrecursionlimit()

返回递归限制的当前值,即Python解释器堆栈的最大深度。 此限制可防止无限递归导致C堆栈溢出和Python崩溃。 可以通过setrecursionlimit()进行设置。

===============>>#4 票数:17

使用保证尾叫优化的语言。 或使用迭代。 另外,也可以和装饰工一起变得可爱。

===============>>#5 票数:17

如果您经常需要更改递归限制(例如,在解决编程难题时),则可以定义一个简单的上下文管理器,如下所示:

import sys

class recursionlimit:

def __init__(self, limit):

self.limit = limit

self.old_limit = sys.getrecursionlimit()

def __enter__(self):

sys.setrecursionlimit(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值