我想创建一个函数,通过使用可以同时处理负数和正数的加法来找到两个整数的乘积。
这是我到目前为止的代码...得到疯狂的数字作为结果..我是菜鸟..谢谢
double multi(double n1, n2)
{
double answer(0), i=0;
do
{
answer += n1; i++;
} while (i < n2);
return answer;
}
我想创建一个函数,通过使用可以同时处理负数和正数的加法来找到两个整数的乘积。
这是我到目前为止的代码...得到疯狂的数字作为结果..我是菜鸟..谢谢
double multi(double n1, n2)
{
double answer(0), i=0;
do
{
answer += n1; i++;
} while (i < n2);
return answer;
}
您可以从使用整数而不是双精度开始,并将它们都作为参数传递......
int multi( int x, int y )
{
int answer = 0;
// stuff goes here...
return answer;
}
我怀疑这是作业,所以我不会逐字给你代码......
但是请考虑,如果一个值为负,则如果该相同值为正,则相对于答案的结果将被否定。有效地,如果您要添加x
并执行y
次数,那么您可以翻转两者的符号,x
如果y
是y
负数。这否定了答案,并给你一个积极y
的循环。
一种优化是检查两个值中的哪一个较大,并使用较小的一个作为循环变量。
..是的,这是hmwk ..但我很抱歉我不明白你的意思..
假设你有两个整数X
和Y
。如果Y
为正,则很容易看出:
X * Y = (X + X + X + X + ...)
现在,如果Y
是负数呢?我将-Y
用来表示:
X * -Y = -(X * Y)
= -(X + X + X + X + ...)
= (-X - X - X - X - ...)
= ((-X) + (-X) + (-X) + (-X) + ...)
所以,如果是肯定的,Y
我将. 如果是负数,我将.Y
X
Y
-Y
-X
如果这仍然没有帮助,那么我建议您坐下来考虑一下。