PHPのホームページのDocumentetionのを読んでいたら「例6 再帰関数での静的変数の使用」と言う項目で以下の説明と例がありました。
static変数は、再帰関数を実現する1つの手段としても使用されます。再帰 関数は、自分自身をコールする関数です。再帰関数を書くときには、無限 に再帰を行う可能性があるため、注意する必要があります。適当な方法に より再帰を確実に終了させる必要があります。次の簡単な関数は、中止す るタイミングを知るためにstatic変数$countを用いて、 10 回まで再帰を行います。
PHP
1<?php 2function test() 3{ 4 static $count = 0; 5 6 $count++; 7 echo $count; 8 if ($count < 10) { 9 test(); 10 } 11 $count--; //ここが気になりました 12} 13?>
説明文からこのコードを実行すると以下のようになるのは推察できました。
terminal
1~ $ php main.php 212345678910~ $
しかし最後の「$count--;」が気になりました。ループを回避するためにあるのかな?と思いましたが気になったので「$count--;」のあとに「echo $count;」を追加してみてみました。すると以下の結果になりました。
terminal
1~ $ php main.php 2123456789109876543210~ $
予想では
terminal
1~ $ php main.php 2123456789109~ $
となり終了するのではないかと思いましたがそれでは無限ループ回避には関係ないですし実行結果からみると最後にゼロになってので無限ループを回避できたのか」?などと思いましたが理解不能です。おそらく本当に基本的なことなんだとは思うんですが調べてみてもわかりません。よろしく願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/29 16:52
2020/06/29 17:21
2020/06/30 02:44