ホームページ >バックエンド開発 >PHPチュートリアル >「聖書」の再帰問題についての混乱 555日間考え続けていますが、まだ解決策が見つかりません...

「聖書」の再帰問題についての混乱 555日間考え続けていますが、まだ解決策が見つかりません...

WBOY
WBOYオリジナル
2016-06-23 14:22:44679ブラウズ

この投稿は 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); は、どのような値を返しますか。 ? 4行目に戻りますか?その後の実行順序は何ですか?誰か分析を手伝ってくれませんか?英雄たちに感謝します!

ディスカッションへの返信 (解決策)

return; は、この関数のプログラムが実行されなくなることを意味します。そのため、値を追加しません。

o しか出力できないのですか?

なぜ hello が出力されるのでしょうか? 誰か分析を手伝ってくれませんか?

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を入力した後、呼び出し元の関数プログラムにNULLを返して終了するのではないでしょうか? llehNULL が出力されるのはなぜですか? ifの関数本体?なぜC言語と違うのでしょうか?この値は、それを呼び出した関数に直接返されるのではありませんか?

最初の再帰の後、Return は値 o を if の関数本体に返しますか?なぜC言語と違うのでしょうか?この値は、それを呼び出した関数に直接返されるのではありませんか?

最初の再帰の後、Return は値 o を if の関数本体に返しますか?なぜC言語と違うのでしょうか?この値は、それを呼び出した関数に直接返されるのではありませんか?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。