Fakultät
Hallolina
- javascript
Ich hab n Problem. Ich soll in der Schule jetzt mit JavaScript mir ausdenken, wie man programmiert, dass er die Fakultät von einer Zahl ausrechnet und zwar mit einer While-Schleife. Ich bin schon total deprimiert, weil ich das bis nächsten Dienstag (also eigentlich schon Freitag) brauche, sonst krieg ich ne 6.
Bis jetzt hab ich nur folgende (falsche) Version:
var Eingabe = ""; <--- braucht man das?
var Zaehler = 1;
var Fakultät = 1;
var Fakultätvon = 4;
while (Eingabe != "Eingabe" && Zaehler <= 4) <--braucht man nicht?!
{
Eingabe = document.write (Fakultätvon=Zaehler*Fakultät);
Zaehler++
}
Vielleicht könnt ihr mir sagen, wie man das macht und warum???? Ich danke schonmal im Voraus.
Hello,
programmieren hat immer was mit strukturiertem Denken zu tun - kann ich nicht gut, arbeite trotzdem seit Jahren in der Branche, gibt also auch andere Qualitäten. Aber nichts desto trotz sollte man sich mal klar machen, wie denn eine Fakultät eigentlich definiert ist, d.h. was man machen muss, um sie zu errechnen.
Nun gut, Schule, also wird wohl irgendwann Rekursion dran sein, das find ich für die Fakultät eigentlich dankbarer, weil es näher an der Berechnungsvorschrift ist, aber egal.
Fakultät iterativ berechnen heißt beispielsweise:
Erkennst du das Schleifenmuster?
MfG
Rouven
Was für eine Art von Schule soll das denn sein?
Aber im Grunde ist es einfach - sieh her:
Du hast eine Zahl, nehmen wir mal 5. Was du dem Skript zu rechnen geben musst ist folgendes:
5 * 4 * 3 * 2 * 1 = Ergebnis.
Du hast immer einen Startwert x und musst diesen bis zur letzten Stelle mit einem ergebnis multiplizieren.
Die JavaScript umsetzung machst du schön selbst, aber folgender Hinweis:
Eingabe = x
EingabeBuffer = Eingabe
ErgebnisBuffer = 1
während: EingabeBuffer > 0:
ErgebnisBuffer = Eingabebuffer * ErgebnisBuffer
EingabeBuffer - 1
Mit einer for-Schleife währe das übrigens schwungvoller umgesetzt.
5 * 4 * 3 * 2 * 1 = Ergebnis.
Du hast immer einen Startwert x und musst diesen bis zur letzten Stelle mit einem ergebnis multiplizieren.
Die JavaScript umsetzung machst du schön selbst, aber folgender Hinweis:
Eingabe = x
EingabeBuffer = Eingabe
ErgebnisBuffer = 1während: EingabeBuffer > 0:
ErgebnisBuffer = Eingabebuffer * ErgebnisBuffer
EingabeBuffer - 1Mit einer for-Schleife währe das übrigens schwungvoller umgesetzt.
Also um meine vorige Antwort ein wenig zu ergänzen:
[code lang=javascript]
var start = 50;
var result = start;
for(var i = start; i > 0; i--) {
result = i * result;
}
alert('Das Ergebnis lautet: ' + result);
// Hat dieser Code fehler?! bin mir grade nicht sicher(zum testen bin ich zu faul, vorallem zu sooo später stunde ..)
gruss die liebe oma
// sorry
var start = 50;
var result = start;
for(var i = start; i > 0; i--) {
result = i * result;
}
alert('Das Ergebnis lautet: ' + result);
Phänomenaler Denkfehler:
Gleich die erste Schleifenroutine liefert 50 * 50 != Fakultät. Außerdem ists nicht deine Hausaufgabe...
Moin,
numal jaanz lamsam. Wenn ich mich nicht irre ist das Operationszeichen für Fakultät das Ausrufungszeichen "!".
Beispeilsweise heißt 3! => 3 mal 2 mal 1.
Oder 5! => 5 mal 4 mal 3 mal 2 mal 1.
Is doch jaanz einfach. Noch einfacher jeht, weil das "mal 1" wegjelassen werden kann. Weil det als Faktor nich jillt (naja, Mattematicker würde hier lachen und sagen, dass Faktor 1 schon mächtich beträchtlich wäre, aber ich bin da janz anderer Meinung).
Also mal zusammejefasst. Nimm die Zahl, ziehe die Wurzel draus und multipliziere das Erjebnis mit eins. Dann bilde das Quadrat. Von dieser Zahl ziehe in Einer-Schritten (bitte, ja) solange was ab, bis davon nichts mehr übrichbleibt. Du erhälst Richtij: ne Null, vorausgesdetzt, das Abziehen hast Du richij jemacht.
Diese Null kannst Du jetrost verjessen. Aber Du hast ja noch die Faktoren aus der Einer-Schritt-Division. Die eins brauchste ooch nich, aber das hab ich ja schon jesacht.
Zurück zum Beispiel. Die Zahl ist, sagen wir mal, eine drei.
3!?
Fast richtig. Bis auf das Fragezeichen, was mich ein bischen irritiert. Lassen wir das weg, erhalten wir
3!
Und das ist genau das was wir haben wollen. Drei Fakultät. Is doch alles ganz einfach.
--roro
Hi!
und zwar mit einer While-Schleife.
Also ich würde dieses Problem nicht iterativ (mit einer Schleife), sondern rekursiv lösen.
Aber beides kann dich natürlich zum richtigen Ergebnis führen.
Schau doch mal hier:
http://de.wikipedia.org/wiki/Rekursion
Dort findest du Pseudocode für beide Lösungsansätze. Es sollte für dich nicht schwer sein, dies in JS umzusetzen.
Oder schau mal hier im Archiv: http://forum.de.selfhtml.org/archiv/2003/9/t56605/
Diese Frage hatten wir nämlich auch schon mal.
Schöner Gruß,
rob