用c ++表示数字

时间:2013-01-21 03:57:59

标签: for-loop math visual-c++ int perfect-square

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

2 个答案:

答案 0 :(得分: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;
    }

答案 1 :(得分: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;
    }