我有这个简单的函数“ decode”,它接受2个数组作为输入,其中第二个数组用于解码第一个数组。
起始输入(不是函数递归时)必须始终采用以下格式:
示例输入:
([4],[0,2,6])
由于某种原因,当我尝试返回解码后的数组时,我的代码总是返回undefined。实际上,即使我将return语句更改为“ return false”之类的东西,我似乎也没有返回未定义的内容。日志语句显示两个数组都捕获了正确的值,这让我非常困惑。
这是我的代码:
var decode = function(A, B){
console.log("A: "+A+" B:"+B);
console.log(B.length);
if(B.length===0){
return A;
}
var newA = [];
var newB = [];
var act = 0;
for(let i=0; i<A.length; i++){
newA[act] = A[i] - (B[i]/2);
newA[act+1] = A[i] + (B[i]/2);
act+=2;
newB = B.slice(i+1);
}
decode(newA, newB);
}
console.log("Answer is" + decode([4], [0,2,6]));
这将始终返回undefined,无论您执行哪种return语句。 Console.log(A);另一方面给了我想要退货的正确价值。
非常感谢您的帮助!非常感谢。
答案 0 :(得分:1)
问题是如果B.length!= 0,则没有返回值。 更改
decode(newA, newB);
到
return decode(newA, newB);