为什么发现当函数返回undefined ===而不是“YES”作为return语句使然?

问题描述 投票:0回答:1

我想创建一个递归函数,它将递增一个值对,返回“YES”的值当值等于另一个值。我可以安慰对成长并最终匹配,但随后的功能与undefined值结束。

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”,但我只得到了一个未定义。

javascript arrays
1个回答
0
投票

您需要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]]));
© www.soinside.com 2019 - 2024. All rights reserved.