LU01.L07 - Rekursiver GGT und Trace Table
Algorithmus:
def ggt(a, b): if b == 0: return a else: return ggt(b, a % b) # Beispielwerte a = 48 b = 18 ergebnis = ggt(a, b) print(f'GGT von {a} und {b} ist: {ergebnis}')
Trace Table:
| Schritt | a | b | a % b | Rekursiver Aufruf (ggt(b, a % b)) | Rückgabewert |
|---|---|---|---|---|---|
| 1 | 48 | 18 | 12 | ggt(18, 12) | - |
| 2 | 18 | 12 | 6 | ggt(12, 6) | - |
| 3 | 12 | 6 | 0 | ggt(6, 0) | - |
| 4 | 6 | 0 | - | - | 6 |
Erklärung des Trace Tables:
- Schritt 1: Der Algorithmus beginnt mit den Werten
a = 48undb = 18. Dabnicht 0 ist, erfolgt ein rekursiver Aufruf mit den neuen Wertenggt(18, 12). - Schritt 2: Der Algorithmus wird nun mit
a = 18undb = 12ausgeführt. Der Rest von18 % 12ist 6, daher wirdggt(12, 6)rekursiv aufgerufen. - Schritt 3: Jetzt sind die Werte
a = 12undb = 6. Der Rest von12 % 6ist 0, und der rekursive Aufruf erfolgt mitggt(6, 0). - Schritt 4: In diesem Schritt ist
b = 0, daher gibt der Algorithmus den Wert vonazurück, der 6 ist. Dies beendet die Rekursion und der GGT ist 6.
