2015-03-16 3 views
5

Der Code, den ich bereits habe, ist für einen Bot, der einen mathematischen Ausdruck erhält und ihn berechnet. Jetzt mache ich es multiplizieren, teilen, subtrahieren und hinzufügen. Das Problem ist jedoch, ich möchte Unterstützung für Klammern und Klammern in Klammern erstellen. Dazu muss ich den Code, den ich für die Ausdrücke ohne Klammern geschrieben habe, zuerst für den Ausdruck innerhalb der Klammern ausführen. Ich wollte nach suchen und den Ausdruck darin an eine Liste anhängen, bis eine ")" erreicht wird, es sei denn, es wird zuerst eine andere erreicht. In diesem Fall würde ich eine Liste in einer Liste erstellen. Ich würde subtrahieren, multiplizieren und dividieren und dann die Zahlen, die übrig sind, addiere ich einfach zusammen.Python - Aufruf einer Funktion von selbst

So ist es möglich, eine Definition/Funktion aus sich heraus aufzurufen?

Antwort

8

Ja, das ist eine grundlegende Programmiertechnik namens recursion, und es wird oft in genau der Art von Parsing-Szenarien verwendet, die Sie beschreiben.

Stellen Sie sicher, dass Sie einen Basisfall haben, sodass die Rekursion endet, wenn Sie die unterste Ebene erreichen und Sie sich nicht endlos nennen.

(auch das Osterei beachten Sie, wenn Sie Google Rekursion: „Sie Rekursion Meinten?“)

+0

einige Beispiele http://stackoverflow.com/questions/479343/how-can-i-build-a-recursive-function-in -Python –

1

Ja, @ Daniel Roseman sagte dies eine grundlegende Programmiertechnik Rekursion genannt ist.

im Sie eine Probe Beispiel in Python geben

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)