Ich arbeite an einem Problem von CodeChef , wo ich die Fakultät von n Zahlen berechnen muss.
Der Benutzer gibt eine Zahl ein, die festlegt, für wie viele Eingaben eine faktorielle Berechnung ausgeführt werden soll, und gibt dann die zu berechnenden Zahlen ein.
Mein Problem ist mit der Multiplikation selbst. Wenn ich zum Beispiel ein int == 5 habe, dann ist das Ergebnis 20 (es wird n nur von der letzten Fakultät berechnet, nicht von allen)
Hier ist das Problem:
%Vor%Die äußere Schleife definiert, wie viele Berechnungen durchgeführt werden sollen.
Die innere Schleife berechnet die Faktoren, indem sie durch jeden Index von _numberToProcess
iteriert und mit jeder Zahl multipliziert, die kleiner ist als die Zahl, auf die berechnet werden soll.
Das Problem ist, dass die faktorielle Berechnung sich selbst überschreibt,
zum Beispiel:
faktorial von 5 result: 20
aber es sollte 120 sein (es überschreibt sich selbst, bis es den letzten Multiplikator erreicht hat)
Also habe ich folgendes versucht:
%Vor% Dies ist offensichtlich dasselbe wie _numbersToProcess[x] = _numbersToProcess[x] * y;
Aber das ergibt ein völlig anderes Ergebnis:
Wenn wir wieder 5 eingeben, ergibt dies die Ausgabe von -1899959296.
Ich weiß, dass ich leicht aus anderen Einreichungen kopieren und einfügen kann, aber ich möchte wissen, warum meine Methode nicht zur korrekten Ausgabe führt.
Hier ist die Methode in ihrer Gesamtheit:
%Vor%Problem ist mit Ihrer inneren for-Schleife. Hier überschreiben Sie immer das Ergebnis-Array.
d.h. für y = 5; Die innere for-Schleife wird 5 mal ausgeführt.
%Vor%es geht also für 12 Iteration als Ihr _numbertoprocess [5] ändert und stoppt, sobald es weniger als 0 erreicht, z. B. -1899959296.
%Vor%i.e. Sie ändern numbertoprocess jedes Mal in Ihrer inneren for-Schleife.
Sie können es überprüfen, indem Sie
hinzufügen %Vor%in Ihrer inneren for-Schleife.
Im Schleifenzustand y < _numberToProcess[x];
. Es vergleicht zwischen y
und _numberToProcess[x]
Array-Wert
Ich denke, Sie sollten die Schleifenbedingung in y < x
Sei glücklich.
Tags und Links c# console-application for-loop factorial