Ich versuche einen Zähler zu erstellen. Es zählt jede Operation wie Multiplikation, Addition, Subtraktion, Division. Jedes Mal, wenn ich versuche, den Zähler zu streichen, bleibt er gleich null.C++ - Rekursiver Zähler
Kann jemand irgendein Licht auf das werfen, was ich falsch mache?
Ein Großteil meines Codes fehlt, so dass ich ihn vor anderen Klassenkameraden schützen kann, jedoch habe ich aufgelistet, wie viele Operationen in diesem Abschnitt enthalten sind, wo der Code wäre.
long karatsuba(int num1, int num2, int &counter)
{
if (num1 < 10 || num2 < 10)
{
counter++ // 1 operation
return num1 * num2;
}
/* calculates the size of the number */
... 4 operations
/* split the digit sequences about the middle */
... 4 operations
/* 3 calls made to numbers approximately half the size */
int z0 = karatsuba(..., ..., counter);
int z1 = karatsuba(..., ..., counter);
int z2 = karatsuba(..., ..., counter);
return ... // 9 operations
}
-------------------------------------------------------------
int main()
{
int counter = 0;
cout << karatsuba(123, 456, counter) << " " << counter << endl;
cout << endl;
system("Pause");
return 0;
}
Bitte aktuellen, kompilierbaren Code eingeben. Der obige Code weist Syntaxfehler auf. Wo wird "counter" insbesondere deklariert? – wallyk
Wenn der Großteil Ihres Codes * entfernt werden kann * und immer noch den von Ihnen beschriebenen Problemzustand hervorruft, ist es * weit, weit * besser, * das * als vollständige Problemquelle zu veröffentlichen, als unkompilierbare Vermutungen zu veröffentlichen. Und seien Sie nicht überrascht, wenn Sie das tatsächliche Problem beim Reduzieren Ihres Codes finden; es passiert öfter, als Sie vielleicht denken. – WhozCraig
Der Code, den ich entfernt habe, wird nicht benötigt, weil es gut funktioniert. Ich habe diesen Teil der Aufgabe abgeschlossen. Implementieren Sie einfach den Zähler, um jede Operation zu zählen, die nicht funktioniert. – Danielx511