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:

  1. Lassen Sie den Benutzer eine Zahl eingeben und berechnen Sie die Summe aller Zahlen von 1 bis zur eingegebenen Zahl.
  2. Ändern Sie das Programm so ab, dass die Summe aller Zahlen ausgegeben wird, die zwischen zwei Zahlen liegen.
    (Summe aller Zahlen zwischen 5 und 8 ist 5+6+7+8 = 26.