c++ Rekursiv multipliziere 2 Ganzzahlen, die Verwendung von Zusatz
Ich versuche, code zu schreiben, für die Hausaufgaben verwendet Rekursion und neben multiplizieren von zwei ganzen zahlen zusammen. Aber ich bin derzeit immer eine Menge von Fehlermeldungen, und ich bin mir auch nicht sicher, ob ich auf dem richtigen Weg. Und, nur um zu überprüfen, diese ist rekursiv, richtig? Ich schrieb ein Programm für dieses problem, die Super geklappt, bis ich erkannte, es war nicht wirklich rekursiv. Hier ist der vollständige code:
#include <iostream>
#include <iomanip>
using namespace std;
int result;
int m;
int n;
int rmultiply(int m, int n)
{
if(n > 1)
return(m + (rmultiply(n - 1)));
else if ((m == 0) || (n == 0))
return 0;
else if (n == 1)
return m;
}
int main(m, n)
{
cout << "Enter two integers to multiply" << endl; //prompt user to input 2 integers
cin >> m >> n; //store them in variable m and n
result = rmultiply(m,n);
cout << result;
}
Fehler 1: Zu wenige Argumente für Funktion " int rmultiply(int, int)'
return(m + (rmultiply(n - 1)));
Warnung: Steuern Sie erreicht Ende von nicht-void-Funktion
Fehler 2(für code-Zeilen unten): Ausdruck Liste behandelt, als zusammengesetzten Ausdruck in Initialisierung
Fehler 3: Expected ',' or ';' before'{' token
Warnung: Linker operand des Komma-operator hat keine Auswirkungen
int main(m, n)
{
Jede mögliche Hilfe würde geschätzt!
- Das ist einfach nur dumm. Niemand sollte jemals definieren Sie die Multiplikation auf diese Weise, auch nicht als übung.
- Der prof will, dass wir lernen, wie man die Rekursion ordnungsgemäß. Seine Entscheidung, Zuordnungen, nicht von mir!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die Funktion aufrufen, wieder in dieser Linie,
Müssen Sie passieren eine weitere variable.
Es ist auch eine gute Idee, um den Namen der globalen Variablen m und n etwas anderes. Es gewohnt auf die Programmierung, sondern nur zum besseren Verständnis. Weil m und n die variable innerhalb der Funktion
rmultiply
immer anders sein wird als der weltweite m und n (sofern nicht per Referenz übergeben).Für die anderen Fehler, definieren Sie einen Typ der variable in der Zeile,
Als Ganzzahl vielleicht.
Und in der
main
stellen Sie sicher, dass ein integer zurückgegeben. Da in die definition der Funktion, die Sie habenint main
m
variable.rmultiply(m,n-1)
/
,*
, und%
, die alle in der multiplikativen Familie von Operationen. Sie können loszuwerden, die2*z
mitz+z
, und verwenden Sie bitweise Operationen&1
und>>1
für die gerade/ungerade überprüfen und die division durch 2, bzw., aber der prof könnte immer noch einwenden, daß Sie sich nicht in der neben der Familie.