鍍金池/ 問(wèn)答/PHP/ php類里面的方法不能遞歸嗎?

php類里面的方法不能遞歸嗎?

<?php
    class quick{
        //快速排序
        public function quick_sort($arr){
            $base = $arr[0];
            $left_array = array();
            $right_array = array();
            for($i = 1;$i<count($arr);$i++){
                if($base>$arr[$i]){
                    $left_array[] = $arr[$i];
                }else{
                    $right_array[] = $arr[$i];
                }
            }
            $left_array = quick_sort($left_array);
            $right_array = quick_sort($right_array);
            return array_merge($left_array,array($base),$right_array);
        }
    }

    $test_arr =array(23,12,3,88,16,45,2,66);

    $sort = new quick();
    $result = $sort->quick_sort($test_arr);
    var_dump($result);
?>

打印顯示$left_array = quick_sort($left_array);這里開始出錯(cuò), Call to undefined function quick_sort()

回答
編輯回答
撿肥皂

$this->quick_sort()

2017年11月28日 03:33
編輯回答
耍太極

在類文件中引用類中的方法或?qū)傩詴r(shí),都需要用$this-> 指向,或者類中的方法or屬性定義為static 在同類中用self::調(diào)用

2017年10月17日 02:05
編輯回答
妖妖

引用用$this ,但是你的代碼出現(xiàn)死循環(huán)了

2018年6月8日 20:07
編輯回答
半心人

類調(diào)用方法使用:$this

2017年12月25日 12:36
編輯回答
尐懶貓
$left_array = quick_sort($left_array);
$right_array = quick_sort($right_array);

改為

$left_array = $this->quick_sort($left_array);
$right_array = $this->quick_sort($right_array);
2017年10月16日 06:09
編輯回答
帥到炸
<?php
    class quick {
        //快速排序
        public function quick_sort($arr){
            if(count($arr) <= 1){
                return $arr;
            }
            $base        = $arr[0];
            $left_array  = $right_array = [];
            for ($i = 1; $i < count($arr); $i++) {
                if($base > $arr[$i]){
                    $left_array[] = $arr[$i];
                } else {
                    $right_array[] = $arr[$i];
                }
            }
            $left_array  = $this->quick_sort($left_array);
            $right_array = $this->quick_sort($right_array);
            return array_merge($left_array, [$base], $right_array);
        }
    }

    $test_arr = [23,12,3,88,16,45,2,66];
    $sort     = new quick();
    $result   = $sort->quick_sort($test_arr);
    var_dump($result);

幫你修正了一下

2017年11月12日 09:55