Frage von GTAfreak2, 39

Arten von Rekursion?

Wie ERKENNT man den Unterschied zwischen einer primitiv-Rekursiven Funktion und einer Endrekursion?

Ich weiß, dass pRek. am Ende wieder zurückläuft und Endrekursiv nicht, aber wenn ich ein Programm vor mir habe, kann ich nicht festlegen, welcher das ist...

Danke!

Antwort
von Namno, 33

Endrekursion heißt ganz einfach, dass das aufrufen der Methode/Funktion am Ende erfolgt und danach keine weiteren Anweisungen kommen (schließende Klammern zählen nicht). Alles andere ist primitive Rekursion. Endrekursive Stellen kann der Compiler optimieren.

Kommentar von GTAfreak2 ,

Schau dir mal das an... das ist pRek. Sobald n = 1 wird, muss die Funktion doch aufhören und das Ergebnis liefern... Aber warum läuft das Programm wieder zurück?

public static long factorial(int n) {
if (n <= 1)
return 1;
else
return n * factorial(n - 1);
}
Kommentar von Namno ,

Ich kann das vielleicht etwas schlecht erklären, guck dir mal das http://openbook.rheinwerk-verlag.de/javainsel/javainsel_02_007.html#dodtp3878318... an ;)

Kommentar von GTAfreak2 ,

Danke :)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten