为什么这个 javascript 函数一直返回未定义的数组?

Why does this javascript function keep returning an array as undefined?

我有一个简单的函数 "decode",它接受 2 个数组作为输入,其中第二个数组用于解码第一个数组。

起始输入(不是函数递归时)必须始终采用以下格式:

  1. 第一个数组的长度为 1
  2. 第二个数组的长度是 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);