Rekursion (2)
Fakultät einer natürlichen Zahl
Auf wie viele verschiedene Arten kann man 5 Personen auf 5 Stühle setzen?
Die erste hat 5 Möglichkeiten, die zweite noch 4, die dritte noch 3, die vierte 2 und die letzte findet nur einen freien Stuhl vor. Die Antwort heißt also 5!, nämlich 5*4*3*2*1.
Diese Zahl wird hier über einen Selbstaufruf der Methode fak() berechnet.
Die Methode ist eine Funktion, d.h. sie übergibt mit return ein Ergebnis. Um z.B. 5! zu drucken greift die main-Methode auf die Funktion fak(5) zurück, diese greift auf fak(4) zurück, diese auf fak(3), diese auf fak(2), diese auf fak(1). Dann bricht die Kette ab, denn fak(1) liefert einfach die 1, sodass gerechnet wird:
fak(1) = 1
fak(2) = 2 fak(1) = 2
fak(3) = 3 fak(2) = 6
fak(4) = 4 fak(3) = 24
fak(5) = 5 fak(4) = 120
import java.util.*;
public class Rekursion_2_Fakultät {
static int fak(int zahl) {
if (zahl==1) return 1;
// Abbruchbedingung
return zahl*fak(zahl-1);
// Rekursion auf nächst niedrigere Zahl
}
public static void main(String[] args) throws Exception {
Scanner Eingabe = new Scanner(System.in);
System.out.println("Fakultät einer natürlichen Zahl");
System.out.print("\nWelche Fakultät hätten's denn gern?: ");
int wunsch = Eingabe.nextInt();
System.out.println(wunsch+"! = "+fak(wunsch));
//erster Aufruf - Rückkehradresse
}
}
Aufgaben: