javascript - 函数没有返回任何值

标签 javascript function recursion

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

相关文章:

python - 我的 pyvona speak() 函数不工作

c - void* 函数指针数组转换

optimization - 什么是尾递归优化?

perl - 重命名 File::Find 文件夹遍历中的项目

c - 堆栈限制和递归函数

javascript - 当它换行到新行时,我可以将 CSS 应用于 flex-item 吗?

javascript - 用 R 抓取 javascript

javascript - 如何调试 "click"JavaScript 事件的处理程序未被调用的原因?

javascript - karma +typescript + SystemJS -- 缓存问题

php - 如何创建wordpress功能?