示例:<?php
$b=0;
function a($i){
global $b;
if(!$i){return;}
$a=$i;
echo $a,' ';
$i--;
a($i);//开始递归
$b++;
echo $b,' ';
}
a(100);
?>执行结果:
100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 7
4 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48
47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 1
3 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 9
3 94 95 96 97 98 99 100 请按任意键继续. . .问题:为什么在递归后面的代码是在前面全部循环完毕后才开始执行?
$b=0;
function a($i){
global $b;
if(!$i){return;}
$a=$i;
echo $a,' ';
$i--;
a($i);//开始递归
$b++;
echo $b,' ';
}
a(100);
?>执行结果:
100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 7
4 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48
47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 1
3 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 9
3 94 95 96 97 98 99 100 请按任意键继续. . .问题:为什么在递归后面的代码是在前面全部循环完毕后才开始执行?
解决方案 »
- php网络编程,请问Socket的工作原理是如何的?都是一样的吗?
- 请教一个错误Warning: rawurlencode() expects parameter 1 to be string, array given
- 想对自己的网站做压力测试,有什么工具或者方案啊?
- IIS+PHP一天都会出现网页打不慢或者网页访问错误
- 最近在用PHP搞一个MIS,现在才发现自己多差劲!
- 怎么根据两点画线?
- 请问这个数组如何用foreach遍历?
- 新手问题:如何获得网页的参数??类似于index.php?path=p1这样的~~~
- 又是100分的小问题,问数据库相加的更新,太奇怪了:)
- 我用win2k-iis/php/mysql,都是好的,可是不知道为什么php联接不上数据库!急,一直让我没法学习!
- 如何在tpl里把assign的值显示出来
- 天啊,php的session究竟怎么了
echo 'somethig';按照顺序执行的话,echo,应该在a($i)运行完后
a($i)(第1次)运行的时候,a()内部又再次调用a($i)(第2次),在这个运行的过程中,对于a($i)(第1次)是没有运行完,所以不存在echo(第1次)
只有当a($i)(最后1次),它本身运行到一半的时候,发现条件不满足,return了,算它本身结束了
之后,对于上一层:a($i)(倒数第2次)来说,a($i)调用完毕,因此echo了,
之后,又是上上层
他就好比一层一层进去在一层一层退出来,也不知道这样说恰当不!<?php#$b=0;function a( $i )
{
#global $b;
if( !$i ){ return; }
$a=$i;
echo $a,' ';
$i--;
a($i);//开始递归
#$b++;
#echo $b,' ';
echo $i,' ';
}
a(100);