1
:a ^ b
1
:(a & b) << 1
a ^ b ^ (a & b) << 1
1
,继续 递归
或 迭代
function add(a, b) {
if (b === 0) return a
return add(a ^ b, (a & b) << 1)
}
function add(a, b) {
while(b) {
const t = a ^ b
b = (a & b) << 1
a = t
}
return a
}
设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。
var add = function(a, b) {
if (b === 0) return a
return add(a ^ b, (a & b) << 1)
};
func add(a int, b int) int {
if b == 0 {
return a
}
return add(a ^ b, (a & b) << 1)
}
class Solution {
function add($a, $b) {
if ($b === 0) return $a;
return $this->add($a ^ $b, ($a & $b) << 1);
}
}
var add = function(a, b) {
while (b) {
const t = a ^ b
b = (a & b) << 1
a = t
}
return a
};
func add(a int, b int) int {
for b != 0 {
t := a ^ b
b = (a & b) << 1
a = t
}
return a
}
class Solution {
function add($a, $b) {
while ($b) {
$t = $a ^ $b;
$b = ($a & $b) << 1;
$a = $t;
}
return $a;
}
}