Ich bin neu in der Programmierung und ich sah ein Beispiel für Rekursion in einem Buch geschrieben, die mich verwirrt.Wenn 'return' eine Methode beendet, wie funktioniert diese faktorielle Rekursion?
Wenn return
die Ausführung der Methode beendet, wie funktioniert das?
public class Recursion{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Type a number -> ");
int n = s.nextInt();
n = factorial(n);
System.out.println("FACTORIAL : " + n);
}
static private int factorial(int n) {
if (n == 0) {
System.out.println("-- REACHED ZERO! " + n);
return 1; // even if the method reach this condition, it doesn't stop the method, but why?
}
System.out.println("N: " + n);
int r = n * factorial(n - 1);
System.out.println("R: " + r); // even with the 'return 1;' line, this will print. But how does that works?
return r;
}
Wenn ich den Code ausführen, wird das Ergebnis wie erwartet:
Type a number -> 5
N: 5
N: 4
N: 3
N: 2
N: 1
-- REACHED ZERO! 0
R: 1
R: 2
R: 6
R: 24
R: 120
FACTORIAL : 120
'int r = n * Fakultät (n - 1)'. Ruft sich selbst an. Das ist Rekursion. –
Rekursion bedeutet eine Methode, die sich selbst aufruft. in einfachen Worten, ein Mann, der seinen eigenen Zwilling anstellt, um die Berechnung zu handhaben, die er alleine behandeln kann und so weiter. Wenn also eine Methode zurückkehrt, wird die aktuelle Instanz oder das Auftreten der Methode nicht als ganzes Programm gestoppt. das heißt, der Zwilling, der am Ende geboren wurde, übergibt seine Berechnungen an seinen älteren Zwilling und stirbt. –
Siehe auch http://introcs.cs.princeton.edu/java/23recursion/ (und http://www.fredosaurus.com/JavaBasics/methods/methods-25-calls.html für weitere Informationen unter der Motorhaube)). –