Braucht die Tail-Rekursion unbedingt einen Akkumulator?

8

Zum Beispiel, da die folgende Funktion keinen Akkumulator hat, ist es immer noch rekursiv?

%Vor%

Alle Berechnungen in der Funktion werden vor dem rekursiven Aufruf verarbeitet, ist es eine hinreichende Bedingung, um als tail rekursiv zu gelten?

    
user1493813 18.12.2012, 19:47
quelle

2 Antworten

10

Die Tail-Rekursion benötigt nicht unbedingt einen Akkumulator. Akkumulatoren werden bei der Tail-Rekursion verwendet, um ein partielles Ergebnis durch die rekursive Aufrufkette zu übermitteln, ohne dass auf jeder Ebene der Rekursion zusätzlicher Platz benötigt wird. Zum Beispiel benötigt die kanonische tail rekursive faktorielle Funktion einen Akkumulator, um das bis dahin aufgebaute Partialprodukt zu propagieren. Wenn Sie jedoch keine Informationen von einem rekursiven Aufruf an seinen Unterpunkt weiterleiten müssen, ist der Akkumulator nicht erforderlich.

Die Funktion, die Sie angegeben haben, ist zwar tail rekursiv, benötigt aber keinen Akkumulator. Bei der Suche nach einem Element in einer Liste muss sich die Rekursion nicht daran erinnern, dass alle Elemente, die sie bisher betrachtet hat, nicht mit dem bestimmten Element übereinstimmen, nach dem gesucht wird. Es muss nur wissen, nach welchem ​​Element und nach welcher Liste gesucht werden soll.

Hoffe, das hilft!

    
templatetypedef 18.12.2012, 19:50
quelle
0

Schwanzrekursion benötigt nicht unbedingt einen Akku. Ein Akkumulator wird jedoch häufig verwendet. Tipp, suche im Wikipedia-Artikel nach "Akku".

    
stewartml 18.12.2012 19:51
quelle