© 2004 Pohlig Informatik Kurse
© 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung: Zünder untersucht Fertig! zünderUntersuchen(…)
© 2004 Pohlig Informatik Kurse Was wird ausgegeben #1 public class RekursionDemo{ #2 public static void main(String[] args){ #3 rekursion(5); #4 } #5 private static void rekursion(int a){ #6 a--; #7 System.out.println(a); #8 if (a!=0) rekursion(a); #9 System.out.println(a); #10 } #11 }
© 2004 Pohlig Informatik Kurse Debug-Session
© 2004 Pohlig Informatik Kurse Übung Lassen Sie das Programm im Trace- Modus (F7) abarbeiten und beobachten Sie die Reihenfolge in der die Anweisungen abgearbeitet werden und welche Werte a im Laufe des Ablaufs annehmen
© 2004 Pohlig Informatik Kurse Sequenzdiagramm Der Akteur startet das Programm Der zurückführende Pfeil symbolisiert die Rekursion
© 2004 Pohlig Informatik Kurse ggT - rekursiv ggT(792,75) ggT(75,42) ggT(42,33) ggT(33,9) ggT(9,6) ggT(6,3) „ggT(3,0)“ static int ggT(int a, int b){ if(a==b||b==0) return a; else return ggT(b,a%b); } Schreiben Sie ein Testprogramm für den ggT analog zu RekursionDemo
© 2004 Pohlig Informatik Kurse n! Version 1 n. (n-1). (n-2) import info1.*; public class FakultaetTest{ public static void main(String[] args){ System.out.print("n: "); int n = Console.in.readInt(); System.out.println("n! = "+fak(n)); } static int fak(int n){ int fakultaet = 1; int faktor = 1; while (faktor <= n){ fakultaet = fakultaet*faktor; //System.out.println(fakultaet); faktor++; } return fakultaet; } } static int fak(int n){ int fakultaet = 1; int faktor = 1; while (faktor <= n){ fakultaet = fakultaet*faktor; //System.out.println(fakultaet); faktor++; } return fakultaet; } faktor in Bedingung Bedingung Fakultaet vor der Zuweisug fakultaet nach der Zuweisung faktor 1true true false
© 2004 Pohlig Informatik Kurse Ausgabe static long fak(int n){ long fakultaet = 1; int faktor = 1; while (faktor <= n){ fakultaet = fakultaet*faktor; System.out.println(fakultaet); faktor++; } return fakultaet; } 21! ist schon wieder nicht mehr berechenbar
© 2004 Pohlig Informatik Kurse n! Version 2 - rekursiv 0! = 1 und n! = n. (n-1)! private static long fakultaet(int n){ if (n==0) return 1; else return n*fakultaet(n-1); }