再帰についての質問

WBOY
リリース: 2016-06-23 13:26:40
オリジナル
909 人が閲覧しました

function getArr($arr='') {    for ($i = 0; $i <= 9; $i++) {        $arr[] = $i;          if (count($arr) < 3) {        	  echo (count($arr)), "|<br/>";  //  这里为什么输出2个2?            getArr($arr);     //  这里不是开辟新栈吗?新栈的变量$i应该好没有执行$i++        }    }    return $arr;    }$arr = array();echo "<pre class="brush:php;toolbar:false">";print_r(getArr($arr));echo "
";
ログイン後にコピー

上記の getArr($arr) についてのコメント これは新しいスタックではないでしょうか?新しいスタックの変数 $i はまだ $i++ を実行していないはずですが、なぜ
1|2|2|Array(    [0] => 0    [1] => 1    [2] => 2    [3] => 3    [4] => 4    [5] => 5    [6] => 6    [7] => 7    [8] => 8    [9] => 9)
ログイン後にコピー

echo (count($arr)), "|
"; が出力されるのでしょうか?


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

これで明確になるはずですclearer

function getArr($arr='') {    printf("传入 %s 大小 %d", print_r($arr, 1), count($arr));    for ($i = 0; $i <= 9; $i++) {        $arr[] = $i;          if (count($arr) < 3) {              echo ' 赋值后 ', (count($arr)), "<br>";            getArr($arr);        }    }    return $arr;     } $arr = array();getArr($arr);
ログイン後にコピー
传入 Array ( ) 大小 0 赋值后 1传入 Array ( [0] => 0 ) 大小 1 赋值后 2传入 Array ( [0] => 0 [1] => 0 ) 大小 2 赋值后 2传入 Array ( [0] => 0 [1] => 1 ) 大小 2
ログイン後にコピー
パラメーターは参照によって渡されず、再帰
によって返されることもないため、再帰はビューを妨げるだけです

ありがとうございます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート