Schriftzug: Fachbereich Mathematik 
  UHH > Fakultäten > MIN-Fakultät > Mathematik > Java-Kurs   STiNE |  KUS-Portal |  Sitemap Suchen Hilfe there is no english version of this page  
 Index   Buch   DOC   API  Kompaktkurs JAVA   
 <<    <     >    >>  Bock / Löbnitz / Werner

11. Rekursionen

Methoden können sich selbst aufrufen, Methoden von Klassen können Objekte derselben Klasse definieren: es handelt sich um selbstbezügliche Konstruktionen. Im Allgemeinen sind rekursive Programme sehr elegant, aber relativ zeitaufwendig. Ich werde dies an Hand von vier Beispielen sehr kurz erkäutern.


11.1 Fakultät n!

Basierend auf n! = n*(n-1)!, 0!=1 kann die folgende Methode implementiert werden:

   static long Fak(long n){
     if (n==0) return 1;
     else return n*Fak(n-1);
   }//Ende Fak

11.2 Fibonacci-Zahlen

Es gilt die Rekursion f(n)=f(n-1)+f(n-2), f(0)=0, f(1)=1. Dies kann direkt in eine Java-Methode übertragen werden:

   static long Fibonacci(int n){
     if (n<=1) return n;
     else return Fibonacci(n-1)+Fibonacci(n-2);
   }

11.3 Turm von Hanoi

   static void Hanoi(int n, String a, String b, String c){
     //uebertraegt n Scheiben von a nach b mit Hilfe von c
     if (n>0){ 
       Hanoi(n-1,a,c,b);
       System.out.println("Scheibe von "+a+" nach "+b);
       Hanoi(n-1, c, b, a);
     }//Ende if
   }//Ende Hanoi()
 

11.4 n-te Ableitung einer Funktion

Beruhend auf der Definition, dass die n-te Ableitung einer Funktion die erste Ableitung der (n-1)-ten Ableitung dieser Funktion ist, kann man die Methode getAbleitung() in der Klasse Funktion5 ausnutzen:

 class Ableitung extends Funktion5{
   Funktion5 f;
   int n;
   Ableitung(Funktion5 f, double a, double b,int n){
     super(a,b);
     this.f=f;
     this.n=n;
   }
       
   double getY(double x){
     if (n==1) return f.getAbleitung(x);
     else {
       Ableitung g=new Ableitung(f,f.xMin,f.xMax,n-1);
       return g.getAbleitung(x);
     }//Ende else
   }//Ende getY()
 }//Ende class Ableitung

Hier wird im Methodenblock von getY() ein Objekt genau der Klasse konstruiert, zu der die Methode getY() gehört. Ferner beachte man, dass getAbleitung() in Funktion5 von getY() Gebrauch macht, so dass dadurch auch die Methode getY() in der Klasse Ableitung sich selbst aufruft.



- Ende des Kurses -


 Index   Buch   DOC   API  Kompaktkurs JAVA   
 <<    <     >    >>  Bock / Löbnitz / Werner

  Seitenanfang  Impressum 2009-03-14, wwwmath (WL)