# Binomialkoeffizient



## babuschka (10. Nov 2009)

Hi,

ich muss in der Methode public static int bonomial(int n, int k) den Binomialkoeffizient berechnen. Ich habe folgendes geschrieben:

public static int binomial(int n, int k) {
		int ergebnis ;
		for(k=0; k<=n; k++){
	    ergebnis= fac(n)/fac(k)*fac(n-k);
	    System.out.println("binomial "+ergebnis);
		}
		return ergebnis;

	}
public static void main(String[] args) {
binomial(0,8);
}

Das Programm erkennt allerdings fac() nicht und liefert kein Ergebnis.Warum passiert das? Wie soll ich richtig schreiben?

Danke euch!


----------



## Bernd82 (10. Nov 2009)

Du musst fac erstmal definieren bzw eine Fakultäts Funktion schreiben die fac berechnet, das macht java nicht von alleine.
google sollte dir da genügend Bsp etc ausgeben


----------



## kirdie (16. Nov 2009)

Das Problem bei diesen Binomialkoeffizienten ist, dass die sehr groß werden können, ich würde also statt int lieber long oder noch besser BigInteger (oder sowas) benutzen.

Die Fakultät ist definiert als fac(n) = n*(n-1)*(n-2)*...*2*1,

z.B. fac(5) = 5*4*3*2*1 = 120.


----------



## 0x7F800000 (16. Nov 2009)

Mit fakultäten kommst du eh keine 2 Meter weit, auch mit longs nicht. Bei BigIntegern würde es klappen, wäre aber unnötig lahm.

Benutze lieber diese Darstellung, die ist etwas überlauf-sicherer und i.Allg. schneller: Binomialkoeffizient ? Wikipedia


----------

