"圣经"递归问题的困惑 想了一天555也无解...

php中文网
发布: 2016-06-23 14:22:44
原创
652人浏览过

本帖最后由 iamsai 于 2013-09-24 21:00:08 编辑

<?php	$str='hello';	reverse_i($str);	function reverse_i($str)	{		if(strlen($str)>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语言不一样?不是直接返回这个值到调用它的函数?

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号