next up previous contents
Nächste Seite: Aufgaben Aufwärts: Funktionen Vorherige Seite: Parameter und -übergabe   Inhalt

Beispiele

Eine Funktion, die in etwa die pow funktion realisiert (einige Sonderfälle werden nicht korrekt behandelt, z.B. $0^y$ für $y < 0$)


 double pow (double x, double y)
 {
   int negative = 0;
   double result;

   if (y == 0.0)  /* x^0 = 1 */
     return 1.0;
   if (x == 0.0)  /* 0^y = 0 */
     return 0.0;
   if (y < 0){    /* x^-y = 1/(x^y) */
     negative = 1
     y=-y;
   }
   result = exp(x*log(y));
   if (negative)
     return 1.0/result;
   return result;
 }

Das nächste Beispiel berechnet die $n$-te Fibonaccizahl


 unsigned long fibonacci (unsigned n) /* F-Zahlen koennen sehr gro"s werden */
 {
   unsigned long vorletzte = 0;
   unsigned long letzte = 1;
   unsigned long aktuelle;

   if(n <= 1)
     return n;
   while(n-- > 1){
     aktuelle = letzte + vorletzte;
     vorletzte = letzte;
     letzte = aktuelle;
   }
   return aktuelle;
 }

Die kann man aber noch viel kürzer schreiben:


 /* F-Zahlen koennen sehr gro"s werden */
 unsigned long fibonacci (unsigned long n) 
 {
   if(n <= 1)
     return n;
   return fibonacci(n-1) + fibonacci (n-2);
 }

Eine Funktion, die sich selbst wieder aufruft, heißt rekursiv. Das letzte Beispiel ist die rekursive Variante der Fibonacci-Funktion.



Thomas Neuhaus
2001-01-14