javascript - 为什么递归函数在返回数组上返回未定义?
问题描述
我正在研究一个简单的算法,使用递归返回最小的数字。一切似乎都是正确的并且工作正常,除了当我最后返回数字数组时,它返回为未定义。
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]));
推荐阅读
- javascript - 如何在 JavaScript 中将字符串分成三部分
- r - 编写一个函数来检查一个字符串是否符合十六进制表示法
- marklogic - Marklogic - 将属性值查询限制为特定集合
- amazon-dynamodb - 使用 DynamoDB 将数字添加到列表项
- sql-server - SQL Server:在 select where column1 like str1 or column2 like str2中使用的索引列
- sql - 上个月至今
- android - 适配器类中的 OnClickListener 按钮使 Kotlin 中的应用程序崩溃
- r - 错误:提供给连续比例的离散值 - 从 igraph 绘制邻接矩阵时出错
- javascript - 仅返回数字并从javascript中的现有数组中删除字符串?
- java - 如何从级别顺序数组构造二叉树?