首页 > 解决方案 > 为什么递归函数在返回数组上返回未定义?

问题描述

我正在研究一个简单的算法,使用递归返回最小的数字。一切似乎都是正确的并且工作正常,除了当我最后返回数字数组时,它返回为未定义。

function findSmallestInt(numbers) {
  var updatedArr = [];
  if (numbers[0] < numbers[1]) {
    numbers.splice(1, 1);
    if (numbers.length > 1) {
      findSmallestInt(numbers);
    } else {
      return numbers;
    }
  } else {
    numbers.splice(0, 1);
    if (numbers.length > 1) {
      findSmallestInt(numbers);
    } else {
      return numbers;
    }
  }
}

console.log(findSmallestInt([78, 56, 232, 12, 18]));

标签: javascript

解决方案


您可以使用Math.min()

console.log([Math.min(...[78, 56, 232, 12, 18])]);

对于您的递归函数,正如@CertainPerformance之前在评论中指出的那样,您应该return得到 findSmallestInt(number)函数结果:

function findSmallestInt(numbers) {
  numbers.splice(numbers[0] < numbers[1] ? 1 : 0, 1);
  return numbers.length > 1 ? findSmallestInt(numbers) : numbers;
}

console.log(findSmallestInt([78, 56, 232, 12, 18]));


推荐阅读