2017-04-30 6 views
1

Ich brauche eine Schleife, um die Fakultät einer bestimmten Zahl zu finden. Offensichtlich funktioniert das, was ich unten geschrieben habe, nicht, denn wenn i = inputNumber ist, ist die Gleichung gleich 0.Finden der factorial mit einer Schleife in Javascript

Wie kann ich aufhören, InputNumber zu erreichen?

var inputNumber = prompt('Please enter an integer'); 
var total = 1; 

for (i = 0; i <= inputNumber; i++){ 
    total = total * (inputNumber - i); 
} 

console.log(inputNumber + '! = ' + total); 
+0

Mögliches Duplikat [Fakultät einer Zahl] (http://stackoverflow.com/questions/4438131/factorial-of-a-number) – Harald

Antwort

1

hier ist ein Fehler i <= inputNumber

i < inputNumber

var inputNumber = prompt('Please enter an integer'); 
 
var total = 1; 
 

 
for (i = 0; i < inputNumber; i++){ 
 
    total = total * (inputNumber - i); 
 
} 
 

 
console.log(inputNumber + '! = ' + total);

1
var inputNumber = prompt('Please enter an integer'); 
var total = 1; 

for (i = 0; i < inputNumber; i++){ 
    total = total * (inputNumber - i); 
} 

alert(inputNumber + '! = ' + total); 
+0

Sie erklären soll, welche Änderungen Sie haben gemacht. Es ist nicht sehr hilfreich, korrigierten Code einfach zu löschen, ohne ihn zu erklären. – Carcigenicate

+0

Erklärung hier hinzugefügt: Sollte die Bedingung "i <= inputNumber" durch "i bboy

1

Sie könnten den Eingabewertund ein while statement mit einem Präfix verwenden sollte.

var inputNumber = +prompt('Please enter an integer'), 
 
    value = inputNumber, 
 
    total = inputNumber; 
 

 
while (--value) {       // use value for decrement and checking 
 
    total *= value;       // multiply with value and assign to value 
 
} 
 

 
console.log(inputNumber + '! = ' + total);

1

Sie können diese halten: i < = Inputnumber

und tun gerade diese Änderung: total = total * i;

dann der Code-Snippet würde wie folgt aussehen:

var inputNumber = prompt('Please enter an integer'); 
var total = 1; 

for (i = 1; i <= inputNumber; ++i){ 
total = total * i; 
} 

console.log(inputNumber + '! = ' + total); 
0

Gesamt Mit * = i; stellt alle Ihre faktoriellen Berechnungen ohne zusätzlichen Code auf. Für eine korrekte Fakultät möchten Sie von Ihrer Eingangsnummer herunterzählen, anstatt sie zu erhöhen. Dies würde funktionieren gut:

var inputNum = prompt("please enter and integer"); 
var total = 1; 
for(i = inputNum; i > 1; i--){ 
total *= i; 
} 
console.log(total); 
Verwandte Themen