首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP中的递归在数组中查找最大值

问使用PHP中的递归在数组中查找最大值
EN

Stack Overflow用户
提问于 2016-10-08 02:20:14
回答 1查看 664关注 0票数 1

我知道如何使用循环来解决这个简单的问题,但我想更多地使用递归。我试图使用PHP递归在数组中找到最大值。我的基本思想是比较数组的第一个值和新数组的最大值(通过删除给定数组的第一个值来实现):

代码语言:javascript
复制
function find_max($arr)
{
    if ($arr = []) 
    {
        return 0;         // base case
    } else
    {
        if ($arr[0] > find_max(rest_of($arr)))
        {
            return $arr[0];
        } else
        {
            return find_max(rest_of($arr));
        }           
    }
}

function rest_of($arr)
{
    unset($arr[0]);                  // remove the first value of the array
    $arr = array_values($arr);       // re-index the array
    return $arr;
}

但是当我运行时,它似乎有无限的循环。“未定义的偏移量: 0”有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-08 02:43:51

问题是因为你的基本状况,

代码语言:javascript
复制
if($arr = []){ ...

=是赋值运算符,而不是比较运算符。这里需要的是一个比较运算符==。所以应该是,

代码语言:javascript
复制
if($arr == []){

,,你可以这样改变你的基础条件,

代码语言:javascript
复制
if(count($arr) == 1){
    return $arr[0]; // base case
}

因此,您的find_max()函数应该如下所示:

代码语言:javascript
复制
function find_max($arr){
    if(count($arr) == 1){
        return $arr[0]; // base case
    }
    if ($arr[0] > find_max(rest_of($arr))){
        return $arr[0];
    } else{
        return find_max(rest_of($arr));
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39928049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档