-2

好的,所以我正在阅读关于 c++ 的 bjarn stroustrups 书,他的一个练习要求我在不使用乘法运算符的情况下计算数字的平方。所以我开始使用的样板代码是一个名为 square 的函数,其类型为 int,参数 x 为 int 类型,代码块返回 x*x; 很简单。所以我想了想,我知道我需要一个循环,我知道它可能是一个 for 循环。我知道我希望循环听起来像这样将 x 添加到 x 并循环 x 次的值。我刚开始使用 c++,所以我不知道如何创建循环。有任何想法吗?

4

2 回答 2

1

所以这个问题的重点实际上只是为了让你自己的乘法函数。有几种方法可以做到这一点。您可以递归地执行此操作(我个人认为这是最简单的)或通过循环。递归:

int mult(int a, int b){

    if (b == 0) {
        return 0;
    }

    b -= 1;

    return (a + mult(a, b));
}

int power(int base, int deg){
    if (deg == 0) {
        return 0;
    }

    deg-=1;

    return mult(base, base)+power(base, deg);
}

或者正如@Cris 上面所做的那样,没有使用嵌套的 for 循环进行递归:

int pow(int a, int b)
    {
      if (b == 0)
        return 1;
      int answer = a;
      int increment = a;
      int i, j;
      for(i = 1; i < b; i++)
      {
         for(j = 1; j < a; j++)
         {
            answer += increment;
         }
         increment = answer;
      }
      return answer;
    }
于 2013-01-21T04:16:04.393 回答
1

在你的情况下 b=2

 int pow(int a, int b)
    {
      if (b == 0)
        return 1;
      int answer = a;
      int increment = a;
      int i, j;
      for(i = 1; i < b; i++)
      {
         for(j = 1; j < a; j++)
         {
            answer += increment;
         }
         increment = answer;
      }
      return answer;
    }
于 2013-01-21T04:04:25.227 回答