# java befehl für fakultät



## newbee (29. Nov 2003)

ich will das mir ein programm fakultäten errechnet. das geht aber nicht mit dem zeichen !
also o! müsset ja eins sein
bsp:0!=1
das zeichen kennt er nicht habe mir aber ein proggie gebaut was das kann aber es kommt immer das falsche raus. kann jemand mal schauen woran das liegt
	
	
	
	





```
public class demo {

   public static void main (String[] args) {
       
       
       System.out.println("n! = "+args[0]);
   }
   private static long fakultaet(int n){
      if (n==0||n==1) return 1;
      else return n*fakultaet(n-1);
   }
}
```
bsp:
java demo 0
ausgabe
n!=3


----------



## Guest (29. Nov 2003)

gibt glaub ich keine fuktion dafür.
kannste dir aber recht leicht selber schreiben.


```
static long fakultaet(int n) {
	long number = n;                           
	long counter = 1;
	long result = 1;
	
	while (counter <= number) {
		result = result * counter;
		counter ++;		
	}
	return result;
}
```


----------



## brownie (29. Nov 2003)

Oder in einer rekursiven Variante:


```
class Fakultaet {
		
	public static int fakultaet(final int n) { 
		final int ergebnis = n == 0 ? 1 : n * fakultaet(n - 1);   
		return ergebnis; 
	}

	public static void main(String[] args) {
		System.out.println("Ergebnis: " + fakultaet(Integer.parseInt(args[0])));
	}
}
```


greetz
brownie


----------



## newbee (29. Nov 2003)

danke das geht gut. wie kann ich jetzt z.B n über k ausrechnen lassen?





n =  n! / (n-k)! * k!   
k                                   oder?

sprich: n über k istgleich n fakultät durch n-k fakultät mal k fakultät.


----------



## Keld (29. Nov 2003)

probiere es mit der methode einmal:

	public static int fakul(int x){
		int z = 1;
		for (int i=z ; i <= x ; i++){
			z = z * i;
		}

		return z;

	}


man kann dann auch (n über k) so berechnen:

n = fakul(n) / ( fakul(n-k) * fakul(k) )


----------

