Есть ли способ сделать метод рекурсии с неограниченной глубиной в Python?

Например, при написании некоторых алгоритмов на графах типа

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): вернуть n» - меня интересует общее решение). Спасибо за помощь!


person Antoine    schedule 20.04.2013    source источник
comment
Позвольте мне сказать по-другому: возможно ли сделать метод рекурсии с макс. глубина 104 или 105?   -  person Antoine    schedule 21.04.2013
comment
Вы можете установить ограничение рекурсии на 10 ** 4, но вы можете в конечном итоге привести к сбою python (вероятно, это превышает безопасный предел, который зависит от ОС). Также: stackoverflow.com/questions/2917210/   -  person root    schedule 21.04.2013


Ответы (1)