0

このような質問には答えるべきだと思っていましたが、Google で解決策が見つからないようです。

とにかく。関数が無限再帰であるかどうかを確認する組み込み関数を誰かに提供またはリンクしてもらえますか?

このように見える関数は素晴らしいでしょう

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

これは、停止問題を解決できるかどうかを尋ねることと同じです。これはできません。多数の再帰呼び出しを確認する 1 つの方法は、セーフティ カウンターを使用することです。これは、再帰呼び出しごとに増分されるグローバルな数値です。カウンターが非常に大きな値に達した場合、エラーをスローして再帰を停止させることができます。

于 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 に答える