//加法
int add (int a, int b)
{
//*递推
int c = 1;
for (; c ^ 0; ) //循环条件为:0 != c
{
c = a & b;
a = a ^ b;
b = c<<1;
}
return a;
//*/
/*递归
int c = a & b;
int d = a ^ b;
if (c ^ 0) //若0 != c
{
return add(c<<1, d);
}
return d;
//*/
}
&:位与运算符
|:位或运算符
^:位异或运算符(相同为假,即0;相异为真,即1)
~:位非运算符(按位取反,1变0,0变1)
>>:位右移
<<:位左移
a ^ b:表示a + b,但是没有进位;若进位的值为0,则a + b = a ^ b;
(a & b)<<1:得到进位的值
a + b = (a ^ b) + ((a & b)<<1):a + b的值等于a ^ b的值假上进位的值;用递归或者递推来实现该加法运算,退出条件为进位的值等于0.