c ++使用加法递归地乘以2个整数

时间:2013-11-11 02:12:41

标签: c++ recursion

我正在尝试为使用递归和加法的家庭作业编写代码以将两个整数相乘。但是,我目前收到很多错误消息,我甚至不确定我是否走在正确的轨道上。并且,只是要仔细检查,这是递归的,对吧?我为这个问题写了另一个程序,直到我意识到它实际上并不是递归的。这是完整的代码:

#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;
    }

错误1:函数'int rmultiply(int,int)'

的参数太少
return(m + (rmultiply(n - 1)));

警告:控制到达非空函数的结尾

错误2(对于下面的代码行):表达式列表在初始化程序中被视为复合表达式

错误3:预期','或';'在'{'令牌

之前

警告:逗号运算符的左操作数无效

int main(m, n)
{

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

当你在这一行再次调用该函数时,

return(m + (rmultiply(n - 1)));

你必须传递另一个变量。

此外,将全局变量m和n命名为不同的将是一个好主意。它不会影响编程,只是为了更好地理解。因为函数rmultiply内的m和n变量总是不同于全局m和n(除非通过引用传递)。

对于其他错误,请在行中定义一种变量

main(m, n)

也许是一个整数。

并且,在main中确保返回一个整数。因为在函数定义中你有int main

答案 1 :(得分:0)

int product(int a, int b)
{
    if (b==1)
    {
        return a;
    }
    else
    {
        return a + product(a, b - 1);
    }

答案 2 :(得分:0)

   int f(int x,int y)
  {
        if (y==0)
           return 0;
       int z=f(x,y/2);
         if (y % 2==0)
           return 2*z;
        else
           return x+2*z;
 }