为什么在明确告诉函数返回 true 时函数返回 undefined?

我试图解决以下编码练习。


我们有两个特殊字符。第一个字符可以用一位 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]);


慕码人2483693
浏览 297回答 1
1回答

守候你守候我

我猜你错过了回报。这是调整后的代码: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]);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript