Eine Funktion, die in etwa die pow funktion realisiert (einige
Sonderfälle werden nicht korrekt behandelt, z.B.
für
)
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
-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.