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

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

WBOY
풀어 주다: 2016-06-23 14:22:44
원래의
693명이 탐색했습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿