Lineare Rekursion: Fakultät und Summe

Intermediate Algorithmen und Datenstrukturen Deutsch
Also available: English
Created by Best · 16.08.2026 at 09:13 UTC

Lineare Rekursion: jeder Aufruf erzeugt höchstens einen weiteren Aufruf. Fakultät: n! = 1 für n <= 1, sonst n * (n-1)!. Summe 1..n analog.

Die Aufruftiefe ist $\Theta(n)$. Die Arbeit ist $\Theta(n)$, wenn pro Frame konstante Arbeit anfällt.

Iterative Varianten vermeiden Stackwachstum und sind in Java oft robuster.

Lineare Rekurrenz als Treppe: Climbing Stairs [1].

Wo gebraucht

Lehrform für Induktion und für das Lesen von Spezifikationen. In Produktion ersetzt man lineare Ketten oft durch Schleifen; die rekursive Form bleibt in Beweisen, in funktionalen Sprachen und in Codegenerator-Ausgabe sichtbar.

Vertiefung

Lineare Rekursion erzeugt pro Aktivierung höchstens einen weiteren rekursiven Aufruf. Die Anzahl aktiver Ebenen entspricht bei Fakultät oder Präfixsumme der Grösse des noch nicht bearbeiteten Eingabeteils.

Die Fakultätsdefinition kombiniert das kleinere Ergebnis beim Zurückkehren mit dem aktuellen Faktor. Eine Summenfunktion über ein Array kann analog Index oder Restlänge als Fortschrittsmass verwenden. Beide benötigen lineare Zeit und linearen Aufrufspeicher.

Numerische Grenzen bleiben unabhängig von der Rekursionsform. int und long überlaufen schon bei moderaten Fakultätsargumenten; für exakte grosse Werte ist BigInteger nötig.

Schwierigkeitsstufen

  1. Aufruf- und Rückkehrphase einer linearen Rekursion verfolgen.
  2. Zeit- und Speicherbedarf aus dem Fortschrittsmass ableiten.
  3. Rekursionslogik von numerischem Überlauf trennen.

Fallstricke

Ein korrekter Abbruch schützt nicht vor arithmetischem Überlauf. Häufig wird ausserdem nur die Zahl der Aufrufe betrachtet und der gleichzeitig belegte Aufrufspeicher vergessen.


Sources

University approvals: 0
Tasks
Question 1

Implementiere fact(n) rekursiv für n >= 0 (fact(0)=fact(1)=1).

Hint

Ein rekursiver Aufruf lautet in derselben Klasse einfach fact(...). Ganzzahlliterale lassen sich mit dem Suffix L als long schreiben.

Starter code is prefilled; replace TODO blocks with your solution.
1 test case will be used for grading
Run checks runtime behavior only. Final correctness is evaluated when you submit.
Question 2

Wie viele rekursive Aufrufe (ohne den ersten) macht fact(4) in der klassischen Definition?

Question 3

Welche Ressource wächst bei einer linearen Rekursion über n Elemente typischerweise mit n?

Card Info
  • Topic: Algorithmen und Datenstrukturen
  • Difficulty: Intermediate
  • Completed: 0 users
Creator
Best
Best
BestBuddy