知识点:
1.按位异或是不进位的加法。
2.两数按位异或,再加上进位,则是两数之和
3.进位,则两个数都是1的位置,左边需要进位1,(a&b) 两个位置都是1,相与后1,左移进1
4.得出公式a+b=a^b+(a&b)<<1;
5. 注意a&b需要加括号,<<运算高于&
使用迭代方法计算
function sum(a,b){
if(a==0){
return b;
}
if(b==0){
return a;
}
let nA = a^b;
let nB = (a&b) << 1;
return sum(nA,nB);
}