Fakultät mit Javascript berechnen - HILFE!
ceehot
- javascript
Hallo,
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 komme nicht wirklich weiter:
<html>
<head>
<title>Fakultät berechnen</title>
</head>
<body>
<h3> Fakultät </h3>
<script language="Javascript">
var n=0
n= prompt ("Welche Fakultät soll berechnet werden?","");
for(i=0 ; i<=n ; i++)
{
document.write("thead align=center>","<tr>");
document.write("<td>",i,"</td>");
document.write("<td><font color="red">"+ i*i+"</font></td>");
document.write("</tr>");
}
document.write("Es gilt:",n,"!=",i)
</script>
</body>
</html>
Ich bitte drigends um Hilfe :S
Wie kriege ich das nur hin?
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 komme nicht wirklich weiter:
Du berechnest eine Anzahl von Quadratzahlen, keine Fakultät. Wie ist Fakultät in der Mathematik definiert (gerne beschränkt auf natürliche Zahlen)?
Cheatah
Hallo,
Wie ist Fakultät in der Mathematik definiert (gerne beschränkt auf natürliche Zahlen)?
gibt es eine Definition, die nicht auf natürliche Zahlen beschränkt ist? Das wäre mir neu. Aber ich lerne gern dazu.
So long,
Martin
Tach,
Wie ist Fakultät in der Mathematik definiert (gerne beschränkt auf natürliche Zahlen)?
gibt es eine Definition, die nicht auf natürliche Zahlen beschränkt ist? Das wäre mir neu. Aber ich lerne gern dazu.
die Gammafunktion ist eine Erweiterung.
mfg
Woodfighter
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
Hallo,
<form action="" onsubmit="this.ergebnis=fakultät(this.argument); return false;">
da sollten wir nachbessern:
<form action="" onsubmit="this.ergebnis.value=fakultät(this.argument.value); return false;">
Ciao,
Martin
@@Der Martin:
nuqneH
also ohne Überprüfung, ob das Argument ganzzahlig, positiv, und nicht 0 ist.
Auch da sollten wir nachbessern: Das Argument darf 0 sein: 0! = 1.
Qapla'
Mahlzeit Der Martin,
Einfach nach dem GIGO-Prinzip: Garbage In, Garbage Out, d.h. wer ungültige Werte eingibt, bekommt auch Unsinn raus.
Das kannte ich bisher nur unter dem Namen BIBO-Prinzip: Bullshit In, Bullshit Out.
Mittlerweile müssen auch die Kollegen schmunzeln, wenn sie als Antwort auf Fragen wie "Wieso haben wir in derundder Kundenliste so komische/falsche/unvollständige Daten?" nur noch "BIBO!" hören ... und akzeptieren, dass das meistens ihre eigene Schuld ist. :-)
MfG,
EKKi
Hallo,
Einfach nach dem GIGO-Prinzip: Garbage In, Garbage Out, d.h. wer ungültige Werte eingibt, bekommt auch Unsinn raus.
Das kannte ich bisher nur unter dem Namen BIBO-Prinzip: Bullshit In, Bullshit Out.
siehste, man lernt nie aus! :-)
BIBO kannte *ich* noch nicht; GIGO war mir dagegen schon als C64-Programmierer in den 80er-Jahren ein Begriff.
Mittlerweile müssen auch die Kollegen schmunzeln, wenn sie als Antwort auf Fragen wie "Wieso haben wir in derundder Kundenliste so komische/falsche/unvollständige Daten?" nur noch "BIBO!" hören ... und akzeptieren, dass das meistens ihre eigene Schuld ist. :-)
Schön. "BIBO" klingt aber auch weniger gemein als "Was haste wieder für'n Blödsinn eingetragen".
Ciao,
Martin