-2

わかりましたので、c ++に関するbjarn stroustrupsの本を読んでいます。彼の演習の1つで、乗算演算子を使用せずに数値の2乗を計算するように求められます。そのため、私が最初に使用した定型コードは、int 型のパラメーター x を持つ int 型の square と呼ばれる関数であり、コード ブロックは return 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 に答える