我正在尝试在已定义的同一函数内调用一个函数
I am trying to call a function inside the same function that has been defined
我正在尝试这样做:
def enter():
print("hi")
enter()
但是,一开始它给了我这个:
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
但是,在该数据流之后,它开始给我这样的错误:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
它说我已经达到最大深度的递归错误,谁能告诉我如何解决这个问题。
此外,如果有人告诉我递归错误甚至意味着什么,我将不胜感激。
提前致谢!!!
在函数内部调用函数称为递归,是循环的替代方法。但这是有代价的。 Python 需要 "remember" 之前对该函数的所有调用,而不是每次都重置的循环。因此,您可以理解为什么您的计算机最终会 运行 内存不足,因为您没有 停止 调用 enter
。
这称为堆栈溢出——即,当计算机的 "stack"(内存)溢出(变得太高而有点崩溃)。其他较旧的语言,例如 C,根本无法很好地处理这个问题 并且堆栈溢出有点成为程序员要处理的事情,(这就是为什么这被称为 whosebug.com -- 帮助他人解决他们的问题)。
为避免这种情况,Python 设置了递归的限制,超过此限制将引发错误(而不是破坏您的计算机)。为了防止您的代码达到这个(非常高的)限制,您需要指定一个 退出条件 。这是你 return 而不是再次递归的地方。这可以像 if 语句一样简单,也可以更复杂。这也是有道理的。你现在拥有它的方式,很明显为什么它不断递归,你永远不会告诉它不要。
我正在尝试这样做:
def enter():
print("hi")
enter()
但是,一开始它给了我这个:
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
但是,在该数据流之后,它开始给我这样的错误:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
enter()
File "C:/Users/offcampus/AppData/Local/Programs/Python/Python35/len finder.py", line 11, in enter
它说我已经达到最大深度的递归错误,谁能告诉我如何解决这个问题。
此外,如果有人告诉我递归错误甚至意味着什么,我将不胜感激。
提前致谢!!!
在函数内部调用函数称为递归,是循环的替代方法。但这是有代价的。 Python 需要 "remember" 之前对该函数的所有调用,而不是每次都重置的循环。因此,您可以理解为什么您的计算机最终会 运行 内存不足,因为您没有 停止 调用 enter
。
这称为堆栈溢出——即,当计算机的 "stack"(内存)溢出(变得太高而有点崩溃)。其他较旧的语言,例如 C,根本无法很好地处理这个问题 并且堆栈溢出有点成为程序员要处理的事情,(这就是为什么这被称为 whosebug.com -- 帮助他人解决他们的问题)。
为避免这种情况,Python 设置了递归的限制,超过此限制将引发错误(而不是破坏您的计算机)。为了防止您的代码达到这个(非常高的)限制,您需要指定一个 退出条件 。这是你 return 而不是再次递归的地方。这可以像 if 语句一样简单,也可以更复杂。这也是有道理的。你现在拥有它的方式,很明显为什么它不断递归,你永远不会告诉它不要。