我有一个简单的“解码”函数,它接受 2 个数组作为输入,其中第二个数组用于解码第一个数组。
起始输入(不是在函数递归时)必须始终采用以下格式:
- 第一个数组的长度为 1
- 第二个数组的长度是 2,负 1(1,3,7,15,...)
输入示例:
([4],[0,2,6])
由于某种原因,当我尝试返回已解码的数组时,我的代码总是返回未定义。事实上,即使我将 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]));
无论您使用什么返回语句,这都将始终返回未定义。控制台.log(A);另一方面是为我想要返回的内容提供正确的值。
非常感谢您的帮助!非常感谢。
最佳答案
问题在于,如果B.length != 0,则没有返回值。 改变
decode(newA, newB);
至
return decode(newA, newB);
关于javascript - 为什么这个 javascript 函数总是返回一个未定义的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54624210/