在dfs的时候碰到了两个问题。

首先是递归的次数过多导致报错:

1
RuntimeError: maximum recursion depth exceeded。

python默认的递归深度是有限的,大概900多的样子,所以当递归深度超过这个值的时候,就会引发这样的异常。

解决的方法是手工设置递归调用深度,方式为:

1
2
import sys
sys.setrecursionlimit(1000000) #例如这里设置为一百万

第二个引发的问题,是可能内存不足导致栈溢出的报错:

1
Segmentation fault (core dumped)。

而且它没有其他任何提示,终端上只会出现这一行报错。网上大部分的方法都是更改stack的限制:

1
2
ulimit -a
ulimit -S -s unlimited

因为我很清楚是内存不足的问题哈,所以就直接这么解决了。

有的博主好像是因为import包时,顺序出现了问题,需要一个个排查。