“ return arr”在递归函数的if语句中不起作用。为什么?

时间:2019-04-11 19:03:02

标签: javascript

此函数查找可将字段分成最大的等边部分。

function field (width, height) {
  let big = Math.max(width, height);
  let small = Math.min(width, height);

  if (big / small === 1){
    let arr = [];
    arr.push(big);
    arr.push(small);
    return arr;
  }

  field(big-small, small);
}

field(1600, 500) // should be [100, 100]

它返回undefined,但是如果我以前使用console.log,则显示一切正常。为什么?

1 个答案:

答案 0 :(得分:1)

您需要一个return语句来进行递归调用。

return field(big - small, small);

function field(width, height) {
    let big = Math.max(width, height);
    let small = Math.min(width, height);

    if (big === small) { // easier check
        let arr = [];
        arr.push(big);
        arr.push(small);
        return arr;
    }
    return field(big - small, small);
}

console.log(field(1600, 500));