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