javascript - 函数没有返回任何值
问题描述
我需要编写一个递归函数,它应该返回给定数组中的最大数字,我正在使用方法 .splice() 删除较小的数字。当我的数组中只有一个元素时,我将返回该元素女巫将是数组中的最大数字
逻辑似乎有效,但没有返回任何东西,有什么想法吗?
function findMax(arr){
// This function returns the largest number in a given array
if (arr.length === 1){
const bigNum = arr.pop();
return bigNum
}
else if (arr[0] > arr[1]){
arr.splice(1,1)
findMax(arr)
}
else{
arr.splice(0,1)
findMax(arr)
}
}
y = findMax([1,6,8,2,10,5]);
y
undefined
解决方案
您需要返回递归的结果:
function findMax(arr){
// This function returns the largest number in a given array
if (arr.length === 1){
const bigNum = arr.pop();
return bigNum
}
else if (arr[0] > arr[1]){
arr.splice(1,1)
return findMax(arr)
}
else{
arr.splice(0,1)
return findMax(arr)
}
}
y = findMax([1,6,8,2,10,5]);
console.log(y)
如果您正在寻找更简单的东西,另一种选择是直接与递归结果进行比较并返回最大的:
function findMax(arr){
// This function returns the largest number in a given array
if (arr.length <=1) return arr[0]
let [head, ...rest] = arr
let rec = findMax(rest)
return head > rec ? head : rec
// or just:
// return Math.max(head, findMax(rest))
}
y = findMax([10, 9, 14, 3, 1, -2]);
console.log(y)
推荐阅读
- arrays - 如何从大数组中绘制图表?
- php - 将一个函数中的变量用于同一控制器中的另一个函数
- nuxt.js - nuxt i18n 号码本地化
- c# - 当调用递归泛型接口上的扩展方法时,结构实例是否会被装箱?
- ios - 将 UISwitch 添加到 tableviewCell 的字幕样式
- css - 如何更改点击图片的id
- postgresql - postgis:两个地理位置之间的 ST_Distance。语法错误
- java - if 语句检查数组是否为空或空,不起作用
- c# - 如何在 C++ 的构造函数和方法中正确使用接口?
- amazon-web-services - AWS 控制台和请求上下文