<p>您超出了递归深度限制。要更改深度限制,请参阅以下问题:<a href="https://stackoverflow.com/questions/8177073/python-maximum-recursion-depth-exceeded">Python: Maximum recursion depth exceeded</a>。但是,即使这样也帮不了你,因为你打电话的数量非常大。在你的每一个函数完成之前,它会调用另一个(或它自己),所以这就是使你的程序递归的原因。每次调用函数时,函数及其参数都以帧的形式添加到计算机堆栈中。每次从函数返回时,帧都会从堆栈中移除。所以,当您在返回之前调用另一个函数时,堆栈的深度(递归深度)增加了1。旁注:即使没有指定<code>return</code>语句,Python也会在函数末尾自动返回<code>None</code>。在</p>
<p>函数首先将递归深度设为128(大但仍起作用)。添加第二个函数会将深度增加到(128*128或16384)要完成此操作,必须增加递归深度。试试这段代码,当字母3第一次增加时,你会发现它停止了。根据您的计算机,它甚至可能无法达到字母3的第一次增加,这会让您知道您有多少函数调用(这非常适合本网站的标题,堆栈溢出)。在</p>
<p>顺便说一句,不建议使用全局变量,所以我为您更改了它。在</p>
<pre><code>import sys
sys.setrecursionlimit(16385)
def first(letter1, letter2, letter3):
letter1+=1
print(chr(letter1), chr(letter2), chr(letter3))
if letter1==127:
second(letter1, letter2, letter3)
else:
first(letter1, letter2, letter3)
def second(letter1, letter2, letter3):
letter2+=1
print(chr(letter1), chr(letter2), chr(letter3))
letter1=0
if letter2==127:
third(letter1, letter2, letter3)
else:
first(letter1, letter2, letter3)
def third(letter1, letter2, letter3):
letter1=0
letter2=0
letter3+=1
print(chr(letter1), chr(letter3), chr(letter3))
if letter3==127:
print("\n\n\n\n\n\n\n\n\n\n")
else:
first(letter1, letter2, letter3)
letter1=0
letter2=0
letter3=0
first(letter1, letter2, letter3)
</code></pre>
<p>现在16384是第二个函数的深度。加上第三个,它(128*128*128或2097152)对于递归来说太大了。所以我建议你不要使用递归。尝试使用嵌套的<code>for loops</code>。例如:</p>
^{pr2}$
<p>请注意,这仍然需要一段时间,因为它正在生成128^3个打印语句。在</p>