不使用加减乘除实现两数相加
不使用加减乘除,可以考虑移位。
与运算可以反映两数相加的进位情况;异或反映了两数相加不考虑进位的结果;
两数的相加结果就为进位的数加上不进位的数;
这样,递归关系就出来;
何时停止?当不再有进位的时候,就可以直接返回异或的结果了。
1 int bitadd(int a, int b) 2 { 3 int u, c; 4 u = a & b; //进位 5 c = a ^ b; 6 7 if (u != 0) 8 { 9 return bitadd(u<<1, c); 10 } 11 else 12 { 13 return c; 14 } 15 }
毕