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 rekursive faktorielle Funktion des kanonischen Tails 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 von Ihnen bereitgestellte Funktion 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, welches Element zu suchen ist und welche Liste zu suchen ist.
Hoffe, das hilft!
ja, es ist ausreichend – m09
Tail Rekursion ist in strengen Sprachen am besten, aber in Haskell sind die Dinge ein wenig anders. [Diese Frage] (http://stackoverflow.com/questions/13042353/does-haskell-have-tail-recursive-optimization) liefert gute Informationen zu diesem Thema. – AndrewC