我试图解决以下编码练习。我们有两个特殊字符。第一个字符可以用一位 0 表示。第二个字符可以用两位(10 或 11)表示。现在给出一个由几个位表示的字符串。返回最后一个字符是否必须是一位字符。给定的字符串将始终以零结尾。例子:输入:bits = [1, 0, 0] 输出:真以下是我对上述挑战的解决方案。为什么这是回归undefined?如果我使用 [1,0,1,0] 作为输入,它应该返回true但我得到undefined. 我明确地写true在 return 语句中,而不是变量的结果。var isOneBitCharacter = function(bits) { console.log(bits); var length = bits.length; if (length == 1) { return true; } if (length == 0) {return false;} if (length == 2 && bits[0] === 1) { return false; } if (bits[0] === 1) { isOneBitCharacter(bits.slice(1)); } else { isOneBitCharacter(bits.slice(2)); }};isOneBitCharacter([1,0,1,0]);
1 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
我猜你错过了回报。这是调整后的代码:
var isOneBitCharacter = function(bits) {
console.log(bits);
var length = bits.length;
if (length == 1) {
return true;
}
if (length == 0) {return false;}
// added return here and next statements
if (length == 2 && bits[0] === 1) {
return false;
}
if (bits[0] === 1) {
return isOneBitCharacter(bits.slice(1));
} else {
return isOneBitCharacter(bits.slice(2));
}
};
isOneBitCharacter([1,0,1,0]);
添加回答
举报
0/150
提交
取消