我需要编写一个递归函数,该函数应返回给定数组中的最大数字, 我正在使用 .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)
关于javascript - 函数没有返回任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56052192/