0

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

所以无论如何。谁能给我或链接我一个内置函数,它将检查该函数是否无限递归?

看起来像这样的功能将很棒

def Check(InputFunction):
    if InputFunction is infinite recursing 
       print("blablla")/throw exception
    else
       run inputFunction

python中有类似的东西吗?

4

3 回答 3

3

这样的程序不存在。不是在 Python 中,也不是在任何编程语言中。

您要的是所谓的“停止问题”:

在可计算性理论中,停机问题是根据对任意计算机程序的描述和输入来确定程序是完成运行还是永远继续运行的问题。

参考:

http://en.wikipedia.org/wiki/Halting_problem

于 2014-08-09T07:01:01.090 回答
2

这相当于问我们是否可以解决停机问题。这是无法做到的。检查大量递归调用的一种方法是使用安全计数器。这是一个全局数值,每次递归调用都会递增。如果计数器达到某个非常大的值,您可以抛出错误并导致递归停止。

于 2014-08-09T07:03:55.537 回答
0

为什么这不起作用的论点是:你有你的input_function is infinite recursing构造。现在我写这个函数:

def paradox():
    if paradox is infinite recursing:
        return True
    else:
        return paradox()

你期望的结果print paradox is infinite repeating是什么?

于 2014-08-09T11:28:16.000 回答