13.3 ggT rekursiv definiert
|
|
Was ist eine rekursive Methode? | Wie der
euklidche Algorithmus gezeigt hat, wir der ggT zweier Zahlen mittels ggT
zweier (einfacherer) Zahlen bestimmt. Fertig sind wir, wenn die Zahlen,
deren ggT bestimmt werden soll gleich sind, oder wenn b 0 ist. Schauen wir
uns zunächst den Quelltext der rekursiven Methode an:
|
Schreibtischtest | Das
Beispiel zeigt, wie im Innerhalb einer Methode diese selbst wieder
aufgerufen wird. Wie unser rekursive Algorithmus arbeitet, machen wir uns
am besten an einem Schreibtischtest klar. Dazu wählen wir jeweils Werte
für a und b so, dass man alle Möglichkeiten testet. Beispiele: ggT(3,3) =* 3 ggT(24,36) =* ggT(36,24 mod 36) = ggT(36,24) =* ggT(24,36 mod 24) = ggT(24,12) =*ggT(12,24 mod 12) = ggT(12,0) =* 12 ggT(17,19) =* ggT(19, 17 mod 19) = ggT(19,17) =* ggT(17,19 mod 17) = ggT(17,2) =* ggT(2, 17 mod 2) = ggT(2,1) =* ggT(1, 2 mod 1) 0 ggT(1,0) =* 1 [Anmerkung: '*=' ist eine Umformung auf Grund eines rekursiven Aufrufs, die anderen '='-Zeichen sind lediglich algebraische Umformungen, denn der Rechner wertet z.B. ggT(2,17 mod 2) direkt zu ggT(2,1) aus. |
Wichtig
ist, dass bei jedem erneuten Aufruf der Methode, die dabei übergebenen
Werte immer einfacher werden. Damit das Verfahren terminiert, muss
garantiert werden, dass irgendwann eine der beiden Ausstiegsbedingungen,
also a==b
oder b==0
erfüllt ist. |
|
Download GgT4.java |
|
Bemerkungen | Die Methode ggT(...) ist hier außerhalb der main-Methode implementiert, vergleichbar der Implementierung der Methoden in der Klasse Mathematik. Der Aufruf erfolgt ohne Punktnotation, da die Klasse dort implementiert ist, wo sie auch benutzt wird. |
Ergebnis |
|
Download: Mathematik.java |
Hat man sich einmal an rekursive Methode gewöhnt, sind sie häufig einfacher zu implementieren und zu lesen, als nichtrekursive Methoden. Da auch die rekursive ggT-Bestimmung für unsere Testzahlen weniger als eine Millisekunden benötigt entscheiden wir uns dafür, die rekursive Methode in unsere Klasse Mathematik aufzunehmen. |
zu den Hausaufgaben | |
zur Startseite | www.pohlig.de (C) MPohlig 2003 |