Menu
CoddyTech

递归函数

本课属于 Coddy PHP 学习旅程的“逻辑与流程”单元。第 8 课,共 68 课。

递归是一种编程技巧,函数通过调用自身来解决问题。这会产生类似循环的行为,但函数不是使用传统循环,而是不断使用修改后的参数调用自身,直到找到答案。

每个递归函数都必须包含两个基本组成部分,才能正确运行:

基本情况:这是停止递归的条件。如果没有它,函数就会无限次调用自身,导致程序崩溃。基本情况定义了函数何时应该返回结果,而不是再次调用自身。

递归步骤:在这一步中,函数会用经过修改的原始问题调用自身,并逐渐接近基准情况。

下面是一个计算阶乘的递归函数的简单示例:

<?php
function factorial($n) {
    // 递归终止条件:1 的阶乘是 1
    if ($n <= 1) {
        return 1;
    }
    
    // 递归步骤:n! = n * (n-1)!
    return $n * factorial($n - 1);
}

echo factorial(5);  // 输出:120
?>

在这个示例中,factorial(5) 调用 factorial(4),后者又调用 factorial(3),以此类推,直到调用到 factorial(1)(基本情况)。然后结果逐层相乘:1 × 2 × 3 × 4 × 5 = 120。

challenge icon

挑战

简单

创建一个名为 sumDigits 的递归函数,接收一个正整数并返回它各位数字之和。该函数应使用递归逐位拆分这个数字。

你将收到一个输入:一个正整数。读取输入,使用这个数字调用你的递归函数,并输出它各位数字之和。

输入格式:一行,包含一个正整数

预期输出:该数字所有位数的总和

亲手试试

<?php
// 读取输入
$number = intval(fgets(STDIN));

// TODO:在这里创建递归函数 sumDigits


// 调用函数并输出结果
echo sumDigits($number);
?>
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: PHP 在线编译器