1、简单直接,负负得正即可
int add(int a, int b)
{
return a-(-b);
}
2、逐步给其中的一个数+1,另一个数-1(判断需要+1的数的原则是该数<0),加减操作保持平衡即可
注:当要相加的两个数比较大时,这种方法的效率太低
int add(int a,int b)
{
while(a>0)
{
a--;
b++;
}
while(a<0)
{
a++;
b--;
}
return b;
}
3、在不使用加号的情况下,想办法模拟出加法操作的步骤,从而完成整数相加操作。
两个数a和b相加,其结果可以分离为进位和不进位的结构相加。只要能够计算出进位结果和没进位的结果,然后递归调用相加就能够达到题目要求。
在C语言的位操作符中,使用&可以得到进位操作,^可以得到两数中不变的位。
过程如下:
将二进制数转化为十进制时,仍然是正确的
int add(int a,int b)
{
if(b == 0)
return a;
return add(a^b,(a&b)<<1);
}