让我理解这个PHP的递归函数

Let me understand this recursive function of PHP

我正在尝试理解这个递归函数。当我用不同的数字回显时,它 returns 不同的结果。我无法理解这实际上是如何工作的。

    <?php 
       function head_sum($x) {
        return ($x == 1) ? $x : $x + head_sum($x - 1);
    }


    echo head_sum(5);//15
    echo head_sum(2);//3
    echo head_sum(3);//6

每次调用 head_sum 都会调用多次。 第一次传递一直进行到内部 head_sum 调用自身。 它会继续这样做,直到减少 11,此时条件退出。

因此 head_sum(5)

5 进去 i 保存到 $x.

内部递归调用

head_sum( 5 -1 ) // 4

然后3

然后2

然后1

( $x == 1 ) 检查在添加总计数后退出函数,此时已递增至:

5 + 4 + 3 + 2 + 1 = 15

你的函数现在说:

if variable x equals 1 then
return variable x
else
return variable x + this function( variable x -1 )

所以这将保持 运行 直到 $x 等于 1。直到那时它会继续增加自己。

So when you type echo head_sum(5):
head_sum(5); //$x = 5
head_sum(4); //$x = 5+4
head_sum(3); //$x = 5+4+3
head_sum(2); //$x = 5+4+3+2
head_sum(1); //$x = 5+4+3+2+1 = 15


这也可以这样表示(希望我可以在没有白板的情况下正确显示它)

function headsum(5){
    return 5 + head_sum( 5-1 ){
        return 4 + head_sum( 4-1 ){
            return 3 + head_sum( 3-1 ){
                return 2 + head_sum( 2-1 ){
                    return 1
                }
            }
        }
    }
}

希望这是有道理的:)