function demo($num){
echo $num."
";
if($num>0)
demo($num-1);
else
echo "--------------------
";
echo $num."
";
}
demo(10);
我弄不明白为什么“ echo $num."
";”在上面的程序执行完后会再输出0 1 2 3 4 5 6 7 8 9 10,,其原理在哪里?????(上网看了一下相似的解答,但还是不明白,所以请各位别去“借鉴”。)谢谢。
php递归函数?????
答案:4 悬赏:50 手机版
解决时间 2021-03-23 08:18
- 提问者网友:辞取
- 2021-03-22 08:42
最佳答案
- 五星知识达人网友:罪歌
- 2021-03-22 10:04
很简单,每个demo函数不考虑中间的自身递归,都输出同样的2个数$num.,这两个数其实就是首尾对称的的两个数,
全部回答
- 1楼网友:北城痞子
- 2021-03-22 11:16
$hg-1 没有改变$hg的值。而$hg--或者--$hg都改变了$hg的值。
首先分析 $hg--; 这是先用$hg再减1。也就是说每次都用的是 gogo(3).形成了死循环。
然后分析 --$hg; 这是先减1再用。
第1次:gogo(3) = 2*(gogo(2)); //
第2次:gogo(2) = 1*(gogo(1));
第3次:gogo(1) = 0*(gogo(0)) = 0*1 = 0;
- 2楼网友:未来江山和你
- 2021-03-22 11:03
在PHP中,递归是通过栈来实现的,栈是后进先出的,所以最后一次递归调用最先输出
- 3楼网友:我住北渡口
- 2021-03-22 10:25
执行demo($num);时不是还要将$num带入原函数中吗?
$num=10 echo $num=10-->$num=9带入
$num=9 echo $num=9-->$num=8带入....
$num=0 echo $num=0-->$num不大于0返回 $num=0 echo $num=0."
";返回 $num=1时的echo $num=1."
";....
$num=10时echo $num=10."
"; 返回主程序,你说的原因不就是在函数一开始就有一个输出了吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯