/*********************************************************** SWmathfor.java Sigrid Wehner's mathematische Formeln Autorin: Sigrid Wehner Betr.system: Suse Linux Stand: 30.4.2002 **********************************************************/ package SWjtools; /** Sigrid Wehner's mathematische Formeln * @author: Sigrid Wehner * @version 30.4.2002 */ public class SWmathfor { public SWmathfor() { } /** Berechnet n-FAKULTÄT rekursiv.
* (Beispiel für elegantes Verfahren) * @param n natürliche Zahl * @return n! (bzw. -1, falls n negativ war) */ public long fakr(int n) { if (n<0) return -1; else if (n==0) return 1; else return n*fakr(n-1); } /** Berechnet n-FAKULTÄT iterativ. * @param n natürliche Zahl * @return n! (bzw. -1, falls n negativ war) */ public long faki(int n) { long nf = 1; if (n<0) return nf=-1; else if (n==0) return nf=1; else { for (int i=1; i * Dieses ist ein Beispiel für schlechte Anwendung von Rekursion, da die * Anzahl der Rechenschritte gigantisch anwächst mit steigendem n!!! * @param n Es soll n-te Fibonacci-Zahl berechnet werden. * @return n-te Fibonacci-Zahl (bzw. -1, falls n<0) */ public int fibor(int n) { if (n<=0) return -1; else zaehli++; if (n==1 || n==2) return 1; else return fibor(n-1) + fibor(n-2); } /** Berechnet FIBONACCI-Zahlen iterativ.
* Dieses ist ein Beispiel dafür, dass der iterative Algorithmus * effektiver ist als die Rekursion!!! * @param n Es soll n-te Fibonacci-Zahl berechnet werden. * @return n-te Fibonacci-Zahl (bzw. -1, falls n<0) */ public int fiboi(int n) { int fi =1; int h_1=1; int h_2=1; zaehli=1; if(n<=0) return fi=-1; else if (n==1 || n==2) return fi=1; else { zaehli=2; for (int i=3; i