gpt4 book ai didi

javascript - 函数没有返回任何值

转载 作者:行者123 更新时间:2023-11-29 16:31:30 25 4
gpt4 key购买 nike

我需要编写一个递归函数,该函数应返回给定数组中的最大数字,我正在使用 .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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com