[英]Why does function return undefined when it explicitly is told to return true?
我正在嘗試解決以下編碼練習。
我們有兩個特殊字符。 第一個字符可由一位0表示。第二個字符可由兩位(10或11)表示。
現在給出一個由幾個位表示的字符串。 返回最后一個字符是否必須為一位字符。 給定的字符串將始終以零結尾。
例:
輸入:位= [1、0、0]輸出:真
以下是我針對上述挑戰的解決方案。 為什么返回undefined
? 如果我使用[1,0,1,0]作為輸入,它應該返回true
但是我得到undefined
。 我在return語句中顯式地寫true
,而不是變量的結果。
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]);
我想你錯過了回報。 這是調整后的代碼:
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]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.