php递归的新问题 本帖最后由 iamsai 于 2013-09-28 14:04:34 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 函数无论是否 return 语句,都会在函数执行完之后,继续执行调用函数的程序 你想达到你的要求应该改成:<?php reverse_i('hello'); function reverse_i($str){ if(strlen($str)>0) { reverse_i(substr($str,1)); }else{//加上else不然还是会打印出来的 echo substr($str,0,1); //return} }你的理解有问题的,按你的方法最后的echo还是会被执行的 很明显是要输出的呀。。你的程序可以看成这样$str=123;if(strlen('123')>0) //reverse_i('23'); if(strlen('23')>0){ //reverse_i('3'); if(strlen('3')>0){ //reverse_i(''); 不合,然后执行后面语句 echo substr('3',0,1);//输出3} echo substr('23',0,1);//输出2} echo substr('123',0,1);//输出1 你想达到你的要求应该改成:<?php reverse_i('hello'); function reverse_i($str){ if(strlen($str)>0) { reverse_i(substr($str,1)); }else{//加上else不然还是会打印出来的 echo substr($str,0,1); //return} }你的理解有问题的,按你的方法最后的echo还是会被执行的 如果把你程序转换为if,大概流程是这样的<?phpif(strlen('hello')>0){if(strlen('hello')>0){if(strlen('llo')>0){if(strlen('lo')>0){if(strlen('o')>0){if(strlen('')>0){//你以为只输出这个空的,其实前面的也都有执行echo substr('',0,1);}echo substr('o',0,1);}echo substr('lo',0,1);}echo substr('llo',0,1);}echo substr('ello',0,1);}echo substr('hello',0,1);//都会被执行}?> 是吗?<?php$str='hello';function reverse_i($str,$o_str =''){ $str = substr($str, 1); $o_str .= $str.'<br>'; strlen($str) > 0 && $o_str = reverse_i($str,$o_str); return $o_str; }echo reverse_i($str); include_once为什么会有输出? jpgraph中的例子如何使用鼠标拖动实现图形的缩放? php里如何知道一个变量的格式? 进军PHP,环境已经配置好了。大家说说你们都用什么IDE? php用$row = oci_fetch_array($stid, OCI_BOTH)读取数据集只能用数字不能用字段名来提取结果 帮我分析一下百度知道网面,提点提点,谢谢 怎么样能够把一个变量和一个文本筐的内容传出去? 告诉大家一个快捷收藏和浏览自己喜爱网址的方法 变量后的代码为什么不好使? Curl 方法抓取页面时出现的问题, JS代码转成PHP代码 php 取xml中的数据 --超级简单---急急
<?php
reverse_i('hello');
function reverse_i($str)
{
if(strlen($str)>0) {
reverse_i(substr($str,1));
}else{//加上else不然还是会打印出来的
echo substr($str,0,1);
//return
}
}
你的理解有问题的,按你的方法最后的echo还是会被执行的
你的程序可以看成这样
$str=123;
if(strlen('123')>0)
//reverse_i('23');
if(strlen('23')>0){
//reverse_i('3');
if(strlen('3')>0){
//reverse_i(''); 不合,然后执行后面语句
echo substr('3',0,1);//输出3
}
echo substr('23',0,1);//输出2
}
echo substr('123',0,1);//输出1
<?php
reverse_i('hello');
function reverse_i($str)
{
if(strlen($str)>0) {
reverse_i(substr($str,1));
}else{//加上else不然还是会打印出来的
echo substr($str,0,1);
//return
}
}
你的理解有问题的,按你的方法最后的echo还是会被执行的
if(strlen('hello')>0){
if(strlen('hello')>0){
if(strlen('llo')>0){
if(strlen('lo')>0){
if(strlen('o')>0){
if(strlen('')>0){//你以为只输出这个空的,其实前面的也都有执行
echo substr('',0,1);
}
echo substr('o',0,1);
}
echo substr('lo',0,1);
}
echo substr('llo',0,1);
}
echo substr('ello',0,1);
}
echo substr('hello',0,1);//都会被执行
}
?>
$str='hello';function reverse_i($str,$o_str =''){ $str = substr($str, 1);
$o_str .= $str.'<br>';
strlen($str) > 0 && $o_str = reverse_i($str,$o_str);
return $o_str;
}echo reverse_i($str);