为什么我的变量返回null而不是定义的值



有人知道为什么我的"进位">代码中的变量返回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

最新更新