2015-03-16 32 views
5

Kod, który już mam, dotyczy bota, który otrzymuje wyrażenie matematyczne i oblicza je. W tej chwili robię to mnożąc, dzieląc, odejmując i dodając. Problem polega jednak na tym, że chcę zbudować wsparcie dla nawiasów i nawiasów w nawiasach. Aby tak się stało, muszę najpierw uruchomić kod, który napisałem dla wyrażeń bez nawiasów, dla wyrażenia wewnątrz nawiasów. Zamierzałem sprawdzić "(" i dołączyć wyrażenie znajdujące się w środku do listy, aż osiągnie ")", chyba że najpierw dotrze do innej "(", w którym to przypadku utworzyłbym listę wewnątrz listy. Odejmuję, mnożę i dzielę, a następnie liczby, które pozostawiam, po prostu dodaję razem.python - wywołanie funkcji z poziomu samego siebie

Czy można zatem wywołać definicję/funkcję w sobie?

Odpowiedz

8

Tak, jest to podstawowa technika programistyczna o nazwie recursion i jest często używana w dokładnie takich rodzajach analizowanych scenariuszy, jakie opisujesz.

Po prostu upewnij się, że masz skrzynkę bazową, więc rekursja kończy się, gdy dojdziesz do dolnej warstwy i nie skończysz nazywania siebie w nieskończoność.

(uwaga również na jajko, gdy Google rekurencji: „Czy chodziło Ci o rekurencji?”)

+0

niektórych przykładach http://stackoverflow.com/questions/479343/how-can-i-build-a-recursive-function-in -pyton –

1

Tak, jak @Daniel Roseman powiedziane jest podstawową techniką programowania nazywa rekurencji.

im daje przykładowy przykład to w python

def recur_factorial(n): 
    """Function to return the factorial of a number using recursion""" 
    if n == 1: 
     return n 
    else: 
     return n*recur_factorial(n-1)