Hi,
ich habe als Hausaufgabe in Informatik aufbekommen, in Javascript die einer Zahl Fakultät zu berechnen bzw. ein Programm dafür schreiben.
Nun habe ich folgendes "gezaubert"
... und bist offensichtlich verflucht worden.
Fangen wir mal mit der Berechnung an sich an. Die Fakultät von n ist das Produkt aller ganzen Zahlen von 1 bis einschließlich n.
Das kann man auf zweierlei Weise machen: Iterativ oder rekursiv.
Iterativ heißt: Man lässt eine Schleife von 1 bis n laufen und multipliziert das bisherige Ergebnis in jedem Schleifendurchlauf. Vorteil: Leicht zu durchschauen, braucht wenig Speicherplatz.
Rekursiv heißt: Man berechne n!, indem man n mit (n-1)! multipliziert - vorausgesetzt, n ist mindestens 2. Andernfalls (also wenn n=1 ist) setzt man n! hart auf 1. Vorteil: Viele Mathematiker und Informatiker finden das elegant, kommt mit wenig Code aus; Nachteil: Braucht deutlich mehr Speicherplatz, weil die Funktion sich selbst immer wieder aufruft; schwieriger zu verstehen.
Iterativer Lösungsvorschlag:
function fakultät(n)
{ var r=1;
for (var i=2; i<=n; i++) // bei 1 beginnen ist sinnlos, 1*1 bleibt 1
r *= i;
return (r);
}
Rekursiver Lösungsvorschlag:
function fakultät(n)
{ return (n>1 ? n*fakultät(n-1) : 1);
}
Das ist jetzt erstmal alles ohne Plausibilitätskontrolle, also ohne Überprüfung, ob das Argument ganzzahlig, positiv, und nicht 0 ist. Einfach nach dem GIGO-Prinzip: Garbage In, Garbage Out, d.h. wer ungültige Werte eingibt, bekommt auch Unsinn raus.
Der Rest ist eine Frage der Implementierung von HTML und Javascript. Bist du mit HTML-Formularen vertraut? Das wäre eine perfekte Anwendung dafür:
<form action="" onsubmit="this.ergebnis=fakultät(this.argument); return false;">
<fieldset>
<label>Argument</label>
<input type="text" name="argument">
<label>Ergebnis</label>
<input type="text" name="ergebnis" readonly>
<input type="submit" value="Berechnen">
</fieldset>
</form>
Die Ausschmückung überlasse ich dir; ich gebe dir allerdings den guten Rat, auf document.write() zu verzichten.
So long,
Martin
Zwei Stammtischbrüder:
Hier steht, dass laut Statistik über 60 Prozent aller Ehefrauen fremdgehen.
Was soll ich mit dieser Information? Ich brauche Namen, Fotos, Telefonnummern ... !