这对我来说真的很奇怪。当我控制台在console.log(parseInt(a,2))
中记录答案时,它会输出正确的值。但是当我在控制台日志中返回函数时,我得到了未定义。
var addRec = function(a, b, not_first) {
if (!not_first) return addRec(a.toString(2), b.toString(2), true);
if (b === 0 || b === '0') {
console.log(parseInt(a, 2)); // prints 3
return parseInt(a, 2);
}
var carry = a & b;
var a = a ^ b;
var b = carry << 1;
addRec(a, b, true);
};
console.log(addRec(1, 2)); // prints undefined
答案 0 :(得分:2)
你忘了在功能结束时返回。一个不返回任何内容的函数会给undefined
。
var addRec = function(a, b, not_first) {
if (!not_first) return addRec(a.toString(2), b.toString(2), true);
if (b === 0 || b === '0') {
console.log(parseInt(a, 2)); // prints 3
return parseInt(a, 2);
}
var carry = a & b;
var a = a ^ b;
var b = carry << 1;
return addRec(a, b, true); //return value
};