>백엔드 개발 >PHP 튜토리얼 >"圣经"递归问题的困惑 想了一天555也无解...

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

WBOY
WBOY원래의
2016-06-23 14:22:44670검색

本帖最后由 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语言不一样?不是直接返回这个值到调用它的函数?

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.