为什么这个 javascript 函数一直返回未定义的数组?
Why does this javascript function keep returning an array as undefined?
我有一个简单的函数 "decode",它接受 2 个数组作为输入,其中第二个数组用于解码第一个数组。
起始输入(不是函数递归时)必须始终采用以下格式:
- 第一个数组的长度为 1
- 第二个数组的长度是
2, 负 1 (1,3,7,15,...)
示例输入:
([4],[0,2,6])
出于某种原因,当我尝试 return 解码数组时,我的代码总是 return 未定义。事实上,我似乎无法 return 除了 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]));
这将始终是 return 未定义的,无论您使用什么 return 语句。 Console.log(A);另一方面为我提供了我想要的正确值 return.
非常感谢您的帮助!非常感谢。
问题是如果B.length != 0,就没有return值。
更改
decode(newA, newB);
至
return decode(newA, newB);
我有一个简单的函数 "decode",它接受 2 个数组作为输入,其中第二个数组用于解码第一个数组。
起始输入(不是函数递归时)必须始终采用以下格式:
- 第一个数组的长度为 1
- 第二个数组的长度是 2, 负 1 (1,3,7,15,...)
示例输入:
([4],[0,2,6])
出于某种原因,当我尝试 return 解码数组时,我的代码总是 return 未定义。事实上,我似乎无法 return 除了 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]));
这将始终是 return 未定义的,无论您使用什么 return 语句。 Console.log(A);另一方面为我提供了我想要的正确值 return.
非常感谢您的帮助!非常感谢。
问题是如果B.length != 0,就没有return值。 更改
decode(newA, newB);
至
return decode(newA, newB);