今天练习递归函数调用时,明明逻辑都合理,却总是报错,报错信息如下所示:
报错信息大概可以简化为下面这句话:
RecursionError: maximum recursion depth exceeded in comparison
查阅资料得知,这是因为超过了最大递归深度,才会报错。这时候就需要 **将系统的最大递归深度值修改的大一点。**只要在函数前面加入以下语句就可以了:
import sys
sys.setrecursionlimit(100000)
括号里的数值可以根据想要的递归深度去填写,自行斟酌
但是,递归函数的实现很容易导致递归深度过大而导致[递归错误:递归深度超过最大限制]。然而,递归函数也有其缺点:递归层数过多时容易出现[递归错误:递归深度超过最大限制],导致程序崩溃。然而,当n取值较大时,程序就会出现[递归错误:递归深度超过最大限制]。总之,Python中的递归函数虽然便于编写和理解,但在应用时需要注意递归深度限制问题,并尽可能使用循环实现代替递归实现。上述代码中,使用循环代替递归,可以有效避免递归深度过大而导致的错误。为了避免这种情况,可以增加递归深度限制,但这并不是解决问题的根本方法。
pyinstaller 打包.py生成exe
报错RecursionError: maximum recursion depth exceeded in comparison
报错:
超过最大迭代次数
解决:在生成的.spec文件的第二行加入:
import sys
sys.setrecursionlimit(100000)
然后直接打包.spec文件
pyinstaller xxx.spec
今天在用python写一个递归查询数据库的程序时,报了一个错误:
错误的大致意思就是查询过相关文档和资料后才发现了问题原因,python的递归深度是有限制的,默认为1000。当递归深度超过1000时,就会报错。可以将递归的深度修改的大一些,即可解决问题,但是还是建议在程序中不要使用太深的递归层数。
4. 补充测试
由于对最大递归层数产生兴趣,于是我在自己电脑上用以下代码做了测试:
在,再执行上面的代码,发现最多也只是。
系统为了保证自己不会内存溢出,把它关了。要不然就是Python为了保证电脑不会****,