好的,所以我正在阅读关于 c++ 的 bjarn stroustrups 书,他的一个练习要求我在不使用乘法运算符的情况下计算数字的平方。所以我开始使用的样板代码是一个名为 square 的函数,其类型为 int,参数 x 为 int 类型,代码块返回 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 回答