我本以为这样的问题应该得到回答,但似乎我在谷歌找不到任何解决方案。
所以anyawy。谁能给我或链接我一个内置函数,它将检查函数是否无限递归?
一个看起来像这样的函数将会很棒
def Check(InputFunction):
if InputFunction is infinite recursing
print("blablla")/throw exception
else
run inputFunction
在python中有类似的东西吗?
不存在这样的程序。
你要求的是所谓的"停机问题":
参考:http://en.wikipedia.org/wiki/Halting_problem在可计算性理论中,停止问题是从任意计算机程序的描述中确定一个输入,表示程序是结束运行还是继续运行永远。
这相当于问我们是否可以解决停机问题。这是不可能的。检查大量递归调用的一种方法是使用安全计数器。这是一个全局数值,每次递归调用递增。如果计数器达到某个非常大的值,则可以抛出错误并导致递归停止。
为什么这不起作用的理由是:你有你的input_function is infinite recursing
结构。现在我写这个函数:
def paradox():
if paradox is infinite recursing:
return True
else:
return paradox()
你期望print paradox is infinite repeating
的结果是什么?