为什么函数在查找 === 时返回未定义,而不是像 return 语句指示的那样返回'YES'?



我正在尝试创建一个递归函数,该函数将递增值对中的值,并在值等于另一个值时返回"YES"。我可以控制台对增长并最终匹配,但随后函数以未定义的值结束。

function checkKanga(kangaArr) {
    if (kangaArr[0][0] > kangaArr[1][0]) return 'NO';
    if (kangaArr[0][0] === kangaArr[1][0]) return 'YES';
    kangaArr[0][0] += kangaArr[0][1];
    kangaArr[1][0] += kangaArr[1][1];
    checkKanga(kangaArr);
}
checkKanga([ [ 0, 3 ], [ 4, 2 ] ]);

我希望它在运行 4 次后返回"YES",但我只得到未定义。

你需要

return递归调用:

function checkKanga(kangaArr) {
    if (kangaArr[0][0] > kangaArr[1][0]) return 'NO';
    if (kangaArr[0][0] === kangaArr[1][0]) return 'YES';
    kangaArr[0][0] += kangaArr[0][1];
    kangaArr[1][0] += kangaArr[1][1];
    return checkKanga(kangaArr);
}

示范:

function checkKanga(kangaArr) {
    if (kangaArr[0][0] > kangaArr[1][0]) return 'NO';
    if (kangaArr[0][0] === kangaArr[1][0]) return 'YES';
    kangaArr[0][0] += kangaArr[0][1];
    kangaArr[1][0] += kangaArr[1][1];
    return checkKanga(kangaArr);
}
console.log(checkKanga([[0, 3], [4, 2]]));

相关内容

最新更新