PHPの再帰に関する問題

WBOY
リリース: 2016-06-13 13:22:37
オリジナル
984 人が閲覧しました

PHP 再帰問題

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->    
        function test($a)
    {
        echo '&nbsp'.$a.'&nbsp';
        if($a >0)
        {
        
                test($a-1);
        
        }else
        {
            echo '<--->';
        }
        echo '<B>'.$a.'</b>';
    }
    test(3)
ログイン後にコピー



3 2 1 0 <--->0 1 2 3

英雄の皆様、お願いします操作手順を説明するか、参考資料をクリックして勉強してください。私は初心者です。ご了承ください

-----解決策---------------------------- --
お兄さん、関数を呼び出すときは、再帰呼び出しテスト($a-1)が完了したら、新しいスタックを開く必要があります。出力、わかりますか?
そしてもちろん次は <---> わかりますか?
最終的に、開いたスタックをリサイクルするときは、この echo ''.$a.''; ~~~
何か理解できない場合は、指摘して頑張ってください~~

------解決策---------
すべてのレイヤーは同じです:

1、print $a
2、次のレベルの再帰を入力するか、print <--->
3、print $a

その後:

print 3 . 2 を印刷、1 を印刷、0 を印刷、<--->、0 を印刷、1、2 を印刷、3 を印刷。

赤はステップ 1、青はステップ 2 です。


------解決策---------
test(3) 関数テストを実行します:
1. echo $a = 3 を実行し、if 判定 3>0 を入力して test(2) を実行します。ここでは関数 test(3) がまだ実行されていません。まず test(2) を実行します ------- *1;
2. test(2) echo $a = 2 そして 2>0 と判断して test(1) を実行します。まだ実行されていません。まずはtest(1)を実行 ------------*2;
3.test(1) echo $a = 1; 次に1>0と判定してここでtest(0)を実行します。 (1)はまだ実行されていません。まずtest(0) -----------*3;
4. test(0) echo $a = 0; 次に0>0を判定してecho <--- >を実行します。 echo 0;

5. 4の実行後、*3に戻ります。判定が完了したら、echo $a = 1;
6. 5の実行後、*に戻ります。 2 echo $a = 2;
7. 6 実行後は*1に戻ります echo $a = 3;

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