在此功能中,我试图计算方式的数量,可以对数量进行解码。 1应该被解码为a,3被解码为c,26被解码为z。 该函数计算正确的计数,但仅返回未定义的计数。 我认为它应该在正确的时间取消递归调用,并且到达“转义”块,但是不会按原样返回该数字。 谁能指出我的原因,为什么会这样?
function numWaysDecodable(msg) {
msg = msg.toString().split("");
function helper(msg, past = 99, count = 1) {
if (msg.length === 0) {
console.log("wtf count is:"+count);
return count;
}
let head = msg.shift();
if (head < 7 && past < 3) {
count++
}
//the below return statement was missing
return helper(msg, head, count);
}
return helper(msg);
}
console.log(numWaysDecodable(123));
我认为代码未计入nr.3,12 12;我不确定如何解决该问题。还有更多思考要做
答案 0 :(得分:1)
您必须在每次递归函数调用中返回值,例如:
return helper(msg, head, count);
function numWaysDecodable(msg) {
msg = msg.toString().split("");
function helper(msg, past = 99, count = 1) {
if (msg.length === 0) {
console.log("wtf count is:"+count);
return count;
}
let head = msg.shift();
if (head < 7 && past < 3) {
count++
}
return helper(msg, head, count);
}
return helper(msg);
}
console.log(numWaysDecodable(123));