In head recursion
, der rekursive Aufruf, wenn es passiert, kommt vor anderen Verarbeitung in der Funktion (denke daran, dass es am oberen oder Kopf der Funktion passiert).
In tail recursion
ist es das Gegenteil - die Verarbeitung erfolgt vor dem rekursiven Aufruf. Die Wahl zwischen zwei rekursiven Stilen mag willkürlich erscheinen, aber die Wahl kann den Unterschied ausmachen.
Eine Funktion mit einem Pfad mit einem einzelnen rekursiven Aufruf am Anfang des Pfads verwendet die sogenannte Kopfrekursion. Die faktorielle Funktion eines vorherigen Exponats verwendet Kopfrekursion. Das erste, was es tut, wenn es bestimmt, dass Rekursion benötigt wird, ist, sich selbst mit dem dekrementierten Parameter aufzurufen. Eine Funktion mit einem einzelnen rekursiven Aufruf am Ende eines Pfads verwendet die Tail-Rekursion. Refer this article
Beispiel Rekursion:
public void tail(int n) public void head(int n)
{ {
if(n == 1) if(n == 0)
return; return;
else else
System.out.println(n); head(n-1);
tail(n-1); System.out.println(n);
} }
Wenn der rekursive Aufruf am Ende eines Verfahrens auftritt, ist es ein tail recursion
genannt. Die Schwanzrekursion ist similar to a loop
. Die method executes all the statements before jumping into the next recursive call
.
Wenn der rekursive Aufruf bei beginning of a method, it is called a head recursion
erfolgt. Die method saves the state before jumping into the next recursive call
.
"Kopf Rekursion" ist nicht etwas, von dem ich jemals zuvor gehört habe. Es klingt nicht nach einem nützlichen Konzept; Es ist extrem selten, dass ein rekursiver Aufruf das erste ist, was eine Funktion tut. Dies schließt jede Art von Bedingung aus, um zu bestimmen, ob der Aufruf und alle Argumente ausgeführt werden sollen, die vor dem Funktionsaufruf ausgewertet werden müssten. In einigen Sprachen ist dies sogar unmöglich, da die Funktion einen Ausdruck zur Laufzeit auswerten muss, um die Funktion zum rekursiven Aufruf zu bestimmen. – user2357112
Google hat es gegoogelt. Sieht so aus, als ob die Quellen, die den Begriff verwenden, eine sehr lockere Definition von "Kopf" haben, grob gesprochen vor der "echten Arbeit". Ich bin nicht sicher, warum sie überhaupt "Kopfrekursion" definieren; Sie scheinen mit dem Konzept nirgendwohin zu gehen. Es ist definitiv nicht so nützlich wie Tail-Rekursion. – user2357112
Zu unterscheiden zwischen Kopf Rekursion und allem, was nicht Schwanz Rekursion scheint redundant. – Sylwester