繁体   English   中英

为什么递归函数在返回数组上返回undefined?

[英]Why is the recursive function returning undefined on return array?

我有一个简单的算法,我正在使用递归返回最小的数字。 一切似乎都是正确和有效的,除了当我最后返回数字数组时,它返回未定义。

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]));

您可以使用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])); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM