0

たとえば、次のようなグラフにいくつかのアルゴリズムを記述する場合

def f(graph):
    #graph is dictionary of pairs vertex_i:{set of edges (i,j)} for 1<=i,j<=n
    def g(vertex):
        for vertex1 in graph:
            do sth
            ...
            for (i,j) in graph[vertex1]:
                ...
                g(j)#recursive call
        ...
        return ...

    return g(1)

再帰を避ける必要がある場合、コードが非常に長く複雑になるため、再帰の深さが限られていると非常に煩わしい場合があります。無限の深さに到達する方法はありますか? おそらく、次の方法で問題の一般的な解決策を説明できます

def nthNumber(n):
    if n==1: return 1
    else: return nthNumber(n-1)+1

(私はそれが単純なばかげていることを知っています.「nthNumber(n):return nだけを書くべきだった」のような答えを出さないでください-私は一般的な解決策に興味があります). 手伝ってくれてありがとう!

4

1 に答える 1

7

無制限の再帰には無限のリソースが必要です。すべての関数呼び出しにはスタック エントリが必要であり、それらを保持するためのメモリ量は限られています。いいえ、再帰の深さを無制限にすることはできません

を呼び出すことで、制限を上げることができ ます。sys.setrecursionlimit()

于 2013-04-20T20:45:25.587 に答える