Addition without using the '+' operator
CtCI 17.1
by Hari Menon
JavaScript
function add(a, b) {
console.log('1 inside', a, b, a.toString(2), b.toString(2));
if (b == 0) return a;
var sum = a ^ b; // add without carrying
var carry = (a & b) << 1; // carry but don't add
return add(sum, carry); // recurse with sum + carry
}
function iterativeAdd(a, b) {
while (b != 0) {
console.log('2 inside', a, b, a.toString(2), b.toString(2));
var sum = a ^ b;
var carry = (a & b) << 1;
a = sum;
b = carry;
}
return a;
}
console.log(add(23, 43));
console.log(iterativeAdd(23, 43));