我试图理解这个递归函数。当我用不同的数字回显出来时,它会返回不同的结果。我不明白这实际上是如何工作的。
<?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
你现在的函数说:
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
}
}
}
}
}
希望这是有道理的:)
每次调用head_sum时都会调用多次。第一次直通一直进行,直到内部head_sum
调用自己。它继续这样做,直到它下降1
下降到1
此时有条件退出。
所以对于head_sum(5)
5
进去,i
保存到$x
.
内部递归调用
head_sum( 5 -1 ) // 4
然后3
然后2
然后1
( $x == 1 )
检查在添加总计数后退出函数,此时总计数递增为:
5 + 4 + 3 + 2 + 1 = 15