c++ de manière Récursive multiplier 2 nombres entiers à l'aide de plus
Je suis en train d'écrire du code pour les devoirs qui utilise la récursivité et de plus pour multiplier deux entiers ensemble. Mais, je suis actuellement en train de recevoir beaucoup de messages d'erreur, et je ne suis même pas sûr si je suis sur la bonne voie. Et, juste pour vérifier, c'est récursive, droit? J'ai écrit un autre programme pour ce problème qui fonctionnait très bien jusqu'à ce que j'ai réalisé qu'il n'était pas réellement récursive. Voici le code complet:
#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;
}
Erreur 1: Trop peu d'arguments à la fonction " int rmultiply(int, int)'
return(m + (rmultiply(n - 1)));
Avertissement: le contrôle a atteint sa fin de non-void function
D'erreur 2(pour les lignes de code ci-dessous): Expression de la liste des traités en tant que composé d'expression dans l'initialiseur
Erreur 3::', ' or ';' before'{' token
Avertissement: l'opérande gauche de l'opérateur virgule n'a pas d'effet
int main(m, n)
{
Toute aide serait appréciée!
- C'est tout simplement stupide. Personne ne devrait jamais définir la multiplication de cette façon, même pas comme un exercice.
- Le prof veut nous apprendre à utiliser la récursivité correctement. Sa décision de devoirs, pas le mien!
Vous devez vous connecter pour publier un commentaire.
Lorsque vous appelez la fonction de nouveau dans cette ligne,
Vous devrez passer à une autre variable.
En outre, il sera une bonne idée de nommer les variables globales m et n quelque chose de différent. Il l'habitude de nuire à la programmation, mais juste pour mieux comprendre. Parce que le m et n de la variable à l'intérieur de la fonction
rmultiply
sera toujours différente de la global m et n (à moins que passé par référence).Pour les autres erreurs, de définir un type de la variable en ligne,
Comme un entier peut-être.
Et, dans le
main
assurez-vous qu'un entier est retourné. Parce que dans la définition de la fonction vous avezint main
m
variable.rmultiply(m,n-1)
Logique pour ce qui devrait être "ajouter un à lui-même comme beaucoup comme b times". Prenons un exemple de 2*3. Cela peut être réduit (3 fois 2) qui est: 2 + 2 + 2. La suite devrait être la mise en œuvre du code pour cela.
/
,*
, et%
, qui sont tous dans le multiplicative de la famille des opérations. Vous pouvez vous débarrasser de la2*z
à l'aide dez+z
, et l'utilisation des opérations bit à bit&1
et>>1
pour les paires/impaires vérifier et la division par 2, respectivement, mais le prof peut encore l'objet qu'ils ne sont pas dans l'ajout de la famille.