Hier ein rezept, welches den Binomialkoeffizient [tex]$${N}\choose{k}$$[/tex] einmal iterativ und einmal rekursiv berechnet.
Java Source Code
- // rekursive Variante
- static long binCoeff(long n, long k)
- {
- if (k == 0) return 1;
- else if (k > n) return 0;
- else return binCoeff(n-1, k-1) + binCoeff(n-1, k);
- }
- // iterative Variante
- static double binCoeff(double n, double k)
- {
- if (k > n) return 0.0;
- else
- {
- int a = 1;
- for (double i = n-k+1; i <= n; i++) a *= i;
- int b = 1;
- for (long i = 2; i <= k; i++) b *= i;
- return a / b;
- }
- }
Ein Aufruf könnte dann z.B. so erfolgen : System.out.printf("(%g)\n", binCoeff(0.5,-0.75) + binCoeff(1.0,-0.5));
Dieser Aufruf würde (anhand der Double Signatur) die iterative Variante aufrufen.
