ホームページ >バックエンド開発 >PHPチュートリアル >「聖書」の再帰問題についての混乱 555日間考え続けていますが、まだ解決策が見つかりません...
<?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; }?>
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言語と違うのでしょうか?この値は、それを呼び出した関数に直接返されるのではありませんか?