如何在不使用任何二元运算符的情况下乘以两个整数?我知道如何使用递归,但递归将使用“==”。
答案 0 :(得分:10)
您可以对无符号整数using only the increment and decrement运算符执行此操作:
unsigned x(?), y(?);
unsigned r(0);
while(x--) {
unsigned z(y);
while(z--) {
r++;
}
}
这些是我上面用来避免使用二元运算符的技巧,但仍然可以获得相同的效果:
该算法的工作原理是使内循环体运行x * y
次。很明显,外循环运行x
次。内部循环始终运行y
次,因为我小心翼翼地永远不会更改y
的值,方法是将其复制到另一个变量中(同样,不使用赋值运算符)。因此,最终结果是r
递增x * y
次,为我们提供了所需的结果。
答案 1 :(得分:-1)
试试这个:
x * y:
result = 0
while(x--)
while(y--)
result++;
result = (x<0) ? result * -1 : result
result = (y<0) ? result * -1 : result
使用Martinho的帮助