题目:给出两个整数 a 和 b , 求他们的和。
a 1 1 0 0 b 1 0 1 0 c 10 1 1 0
递归:
return b == 0? a : aplusb(a^b,(a&b)<<1);
其中 a^b 表示不同的元素, (a&b)<<1 表示相同的元素。
非递归
tmp = 0
while b != 0
ans = a^b
b = (a&b)<<1
a = tmp
return a
原理 保证 a+b和不变,最后b变成了0,那么a就是a+b了。