日常,练手,没查过是否最优解。
有更优解的朋友,欢迎留言怼我,感谢。

Days 2

:给定一个乱序的、纯数字的、值不重复的数组,请用递归,将其排序。
输入[12, 42, 5, 23, 65]
输出[5, 12, 23, 42, 65]

function quick_sort($array)
{
    if (count($array) > 1) {
        $array_left = [];
        $array_right = [];
        $base = array_pop($array);

        foreach ($array as $item) {
            if ($base < $item) {
                array_push($array_left, $item);
            } else {
                array_push($array_right, $item);
            }
        }
        $array_left = quick_sort($array_left);
        $array_right = quick_sort($array_right);

        return array_merge($array_left, [$base], $array_right);
    }

    return $array;
}

$array = [2, 6, 12, 3, 1, 9];
print_r(quick_sort($array));  /* Result is Array
(
    [0] => 12
    [1] => 9
    [2] => 6
    [3] => 3
    [4] => 2
    [5] => 1
).
*/

Days 1

:给定一个数字数组,请用递归,将其内部的值相加。
输入[2, 4, 6]
输出12

function sum($array)
{
    if (count($array) > 1) {
        return array_pop($array) + sum($array);
    }
    return $array[0];
}

echo sum([2, 6, 3, 1, 9]);  // Result is 21.

:给定数组与上题相同,请用递归,统计其内部值的个数。
输入[2, 4, 6]
输出3

function array_count($array)
{
    $count = 0;
    if ($array !== []) {
        array_pop($array);
        return ++$count + array_count($array);
    }
    return $count;
}

echo array_count([2, 6, 10, 3, 1, 9]);  // Result is 6

UioSun
603 声望33 粉丝

use google find the world. "该用户太懒", dead was yesterday.