首頁 >後端開發 >php教程 >"圣经"递归问题的困惑 想了一天555也无解...

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

WBOY
WBOY原創
2016-06-23 14:22:44681瀏覽

本帖最后由 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