"圣经"递归问题的困惑 想了一天555也无解...
程序员文章站
2024-04-05 21:56:31
...
本帖最后由 iamsai 于 2013-09-24 21:00:08 编辑
请大家看我的问题:
此程序的输出结果是倒序输出 olleh .
经过循环体中reverse_i(substr($str,1));语句的操作 hello ello llo lo o
当字符长度==0时,echo substr($str,0,1); 输出o.
return语句返回什么值呢?是返回到第四行?后面的执行顺序是什么呢?有谁能帮我分析分析?谢谢大侠了!
ello
llo
lo
o
ollehNULL
ello
llo
lo
o
ollehNULL
echo substr($str,0,1); 的功能不是输出字符串的第一个字符吗?那它输入完0以后return NULL到调用函数程序不就结束了吗?为什么会输出llehNULL
0) { reverse_i(substr($str,1)); } echo substr($str,0,1); return; }?>
请大家看我的问题:
此程序的输出结果是倒序输出 olleh .
经过循环体中reverse_i(substr($str,1));语句的操作 hello ello llo lo o
当字符长度==0时,echo substr($str,0,1); 输出o.
return语句返回什么值呢?是返回到第四行?后面的执行顺序是什么呢?有谁能帮我分析分析?谢谢大侠了!
回复讨论(解决方案)
return;是返回的意思,也就这函数的程序不再往下面跑了,函数不需要返回值,所以就不加了!
那只能输出o?
为什么会输出hello呢有谁能帮我分析分析
你直接加我qq吧,
643461761
$str='hello';var_dump(reverse_i($str)); //看看返回了什么function reverse_i($str){ echo $str, PHP_EOL; //看看传入了什么 if(strlen($str)>0) { reverse_i(substr($str,1)); } echo substr($str,0,1); return;}hello
ello
llo
lo
o
ollehNULL
$str='hello';var_dump(reverse_i($str)); //看看返回了什么function reverse_i($str){ echo $str, PHP_EOL; //看看传入了什么 if(strlen($str)>0) { reverse_i(substr($str,1)); } echo substr($str,0,1); return;}hello
ello
llo
lo
o
ollehNULL
echo substr($str,0,1); 的功能不是输出字符串的第一个字符吗?那它输入完0以后return NULL到调用函数程序不就结束了吗?为什么会输出llehNULL
if(strlen($str)>0)
{
reverse_i(substr($str,1)); //这是一次递归调用
}
echo substr($str,0,1);
return;
在第一次递归结束后 Return是返回o这个值到if的函数体吗?怎么和c语言不一样?不是直接返回这个值到调用它的函数?
在第一次递归结束后 Return是返回o这个值到if的函数体吗?怎么和c语言不一样?不是直接返回这个值到调用它的函数?
在第一次递归结束后 Return是返回o这个值到if的函数体吗?怎么和c语言不一样?不是直接返回这个值到调用它的函数?