わかりましたので、c ++に関するbjarn stroustrupsの本を読んでいます。彼の演習の1つで、乗算演算子を使用せずに数値の2乗を計算するように求められます。そのため、私が最初に使用した定型コードは、int 型のパラメーター x を持つ int 型の square と呼ばれる関数であり、コード ブロックは return x*x; でした。ものすごく単純。だから私はそれについて考えました、そして私はループが必要であることを知っています、そしてそれはおそらくforループであることを知っています. ループを次のように鳴らしたいのはわかっています x に x を追加し、これを x の値でループします。私はC ++を使い始めたばかりなので、ループの作成方法がわかりません。何か案は?
質問する
3583 次
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 に答える