Berechnugn der Fakultät

Status
Nicht offen für weitere Antworten.

ben84

Mitglied
hallo;

hab folgendes mit hilfe ertsellt können:

public class fakultat {


public static void main(String[] args) {


long fak;
fak = 5;

for(long i = fak; i > 1; i--, fak = i*fak);


System.out.println("Fak von 5 = " + fak);



}

}

Also meine frage ist woher weiss der compiler das er zb bei der Fakultät 5 >> 1*2*3*4*5 berechnen muss???
werd aus der for schleife net schlau.
Also zuerst is klar das: also für 5 eingesetzt>> for(long i = 5; 5 > 1; 5--,....) also im letzten schritt weiss ich net was er genau macht? fak = 1*2*3*4*5 wie kommt man drauf woher weiss er das er die 5 mal die 4 dann mal die 3..usw machen muss??

bitte um hilfe
 
Code Tags wären hilfreich.

Code:
for(long i = fak; i > 1; i--, fak = i*fak);
Kann man auch schreiben als:

Code:
long i = fak;
while (i>1) {
  i--;
  fakt = i*fak;
}

Hilft dir das?
 
fak = 5;

for(long i = fak; i > 1; i--, fak = i*fak);

i>1 ist bedingung. also scjleife leuft so lange die bedingung true lifert

bei jeder durchlauf wird: (i--, fak = i*fak) durchgeführt.
das bedeutet, dass von i ein 1 abgezogen wird und fak wird mit i multiplitiert,
dadurch wird i immer kleiner, und früher oder speter erreicht 1. die bedingung i > 1 liefert false und schleife endet sich.


es gibt auch andere fakultet- lösung

Code:
public long fak(long zahl){ return zahl>1?zahl*fak(zahl-1):1;}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben