有人知道为什么我的"进位">代码中的变量返回NAN而不是0
var addBinary = function(a, b) {
let i = a.length - 1
let j = b.length - 1
let result = []
var carry = 0;
while (i >= 0 || j >= 0) {
if (i == 0) {
console.log(carry)
}
let sum = carry
if (i >= 0) {
sum = sum + parseInt(a[i])
}
if (j >= 0) {
sum += parseInt(b[i])
}
result.unshift(parseInt(sum) % 2)
carry = parseInt(sum) / 2
i--
j--
}
if (carry > 0) {
result.unshift(1)
}
// console.log(result)
return result.toString()
};
addBinary('11', '1')
console.log(进位(应返回0,而不是NAN。我似乎找不到问题,肯定我遗漏了什么
console.log(carry(返回Nan的原因是您写了:carry=parseInt(sum(/2;这将进位重新定义为Nan而不是0(第一次执行while循环进位是0,但第二次是Nan(。parseInt(sum(返回null(Nan(,因为在另一点上,您写的是b[i]而不是b[j]。
尝试这个
var addBinary = function(a, b) {
let i = a.length - 1
let j = b.length - 1
let result = []
var carry = 0;
while(i >= 0 || j >= 0){
if(i == 0){
console.log(carry)
}
let sum = carry
if(i >= 0){
sum = sum + parseInt(a[i])
}
if(j >= 0){
sum += parseInt(b[i])
}
result.unshift(parseInt(sum)%2)
carry = parseInt(sum)/2
i--
j--
}
if(carry > 0){
result.unshift(1)
}
console.log(carry);
// console.log(result)
return result.toString();
};
addBinary('11','1'); // output NaN
addBinary(11,1); // as we are passing numbers no quotes are needed expected output 0