一个可以在python中捕获无限递归的函数



我本以为这样的问题应该得到回答,但似乎我在谷歌找不到任何解决方案。

所以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的结果是什么?

相关内容

  • 没有找到相关文章

最新更新