并且执行Floop($i+1);的时候,后面的这个语句就不应该执行了呀。它怎么能执行到后面去呢?
解决方案 »
- *************************************GLPI中导出文件中文乱码的问题***************************
- 处理临时文件时出错!上传的时候提示-急需处理给赏金笑脸~~速度啦
- 表单提交问题
- 学做静态页面 讨论一下怎么做
- window-1252数据如何用fsockopen接收呢?
- PHP类与类之间相互引用的问题
- [求助]为什么pear:db总是用不上
- 各位,如何隐藏网站出错信息?
- FSEEK()的功能究竟怎么个用法才好?
- 关于substr函数的问题
- 请教一个倒库问题
- mailto 和mail()的使用方法和区别,用mailto发邮件会调用outlook吧?用mail()前是否先配置邮件服务器,虚拟主机是否可以用mail()?
并且,如果重新执行也不应该拣Floop($i+1);后面的开始执行啊。它的执行原理是什么呢?
function Floop($i=0){
print "<p>i:" . $i . "</p>\n";
if ($i<3){
return Floop($i+1);
}
print "<p>i:" . $i . "</p>\n";
return $i;
}
能帮忙解释一下:
return Floop($i+1);
中return的作用与原理吗?在这个程序片段中程序执行的流程应该是怎样的?为什么执行Floop($i+1);后还会逐层在执行Floop($i+1);后的语句。这个后面的语句包括最后的return $i;吗?
function Floop($i=0){
print "<p>i:" . $i . "</p>\n";
if ($i<3){
return Floop($i+1);
}
print "<p>i:" . $i . "</p>\n";
return $i;
}
为中序遍历。
输出节点值,然后进入子节点。直至到叶节点($i=3)。
携带叶节点值返回上级,直至根节点。
若Floop($i+1);前没有return,那么当然要执行到return $i;并且返回的值也不是叶节点的
print "<p>i: 0 </p>\n";
//Floop(1);
print "<p>i: 1 </p>\n";
//Floop(2);
print "<p>i: 2 </p>\n";
//Floop(3);
print "<p>i: 3 </p>\n";
print "<p>i: 3 </p>\n";
print "<p>test</p>\n"; //return 3; 后执行
print "<p>i: 2 </p>\n";
print "<p>test</p>\n"; //return 2; 后执行
print "<p>i: 1 </p>\n";
print "<p>test</p>\n"; //return 1; 后执行
print "<p>i: 0 </p>\n";
return 0;
执行到Floop($i+1); 表示调用函数Floop,那么Floop结束做什么呢?函数执行完后,不是返回到调用函数处的下一行吗?
print "<p>i:" . $i . "</p>\n";
if ($i<3){
Floop1(1);
print "<p>test</p>\n";
}
print "<p>i:" . $i . "</p>\n";
return $i;
}
function Floop1($i=1){
print "<p>i:" . $i . "</p>\n";
if ($i<3){
Floop2(2);
print "<p>test</p>\n";
}
print "<p>i:" . $i . "</p>\n";
return $i;
}
function Floop2($i=2){
print "<p>i:" . $i . "</p>\n";
if ($i<3){
Floop3(3);
print "<p>test</p>\n";
}
print "<p>i:" . $i . "</p>\n";
return $i;
}
function Floop3($i=3){
print "<p>i:" . $i . "</p>\n";
if ($i<3){
Floop4(4);
print "<p>test</p>\n";
}
print "<p>i:" . $i . "</p>\n";
return $i;
}
$r_Floop = Floop0();
print "<p>r_Floop:" . $r_Floop . "</p>\n";
i=1-->
i=2--->
i=3 不满足条件回归,执行下面的代码
i=2<---
i=1<---
i=0<----
那么一定是你的主函数中有一个需要调用Floop($i);的过程,当不为3的时候(它给初值i=0),执行一个后返回一个Floop(参数);这个还要拿回来执行直到参数》=3,才结束调用,执行主函数中需要调用Floop()函数下面的部分。