内部実行順序再帰関数

    書式#include <stdio.hに>  
      
    の楽しみ(int型n)は、  
    {  
        printf(" 1番目-レベル:%dの住所:%D \ N "、N&N)。  
        もし(N < 3 
            楽しい(N + 1 )。  
        printf(" 2番目-レベル:%dの住所:%D \ N "、N&N)。  
    }  
      
    int型のmain()  
    {  
        楽しい(1 );  
        リターン 0 ;  
    }  



出力結果:

分析:

1)メイン関数呼び出しファン(1);
2)ここで、N個の第1ラインの出力次に、1であり、n及び抽象AAAAのアドレスを取得する;
3)決意、1 <3 、再帰文楽しい再実行機能;
4)転送パラメータN + 1は、この層ので、N 2、2行目の、出力、及びnは抽象BBBBに新しいアドレスである
。5)を分析、2 <3、再帰文が再び楽しい機能を実行する、
;の現在値の6)同様に使用可能層N、結果を得るための第三のライン、および新しいアドレスN抽象CCCC 3である
。7)を決定、3 < ; 3が満たされていない、第2の直接実行出力文、すなわち、第4行の結果の出力、アドレスNがCCCC、容易に理解表示され、再帰的に実行されていない
8)この層のが完了し、続行する前のブレークポイントへの復帰は、すなわち、nはレイヤ2であり、プログラムは次を行うように、第2の出力、すなわち出力が第5行を取得するために、再帰的に実行しなければならず、ここで、n表示BBBBのアドレスである場合、
図9)の場合、N 2の一つであります実行が終了すると、前のレベル、すなわちに戻り、nは1であり、プログラムは、再帰的実行しなければならないので、次の実行 出力文、すなわち、第六の出力ラインを得るため、NはディスプレイアドレスAAAAである

プログラムの終わり。
概要:
1.再帰の各レベルは独自の変数を使用して、N、あなたが証明するために、アドレスの値を表示することができます。
2.たびに関数呼び出しは、リターンがあるでしょう。プログラムは、再帰的な一定レベルの最後に実行を流したとき、それは再帰的には、継続前のレベルに移動します。
3.再帰呼び出しにある文の順序、および呼び出された関数のそれぞれの文を逆に、再帰呼び出し文と呼ばれる機能と同程度のそれぞれの実行順序のステートメントの前に位置しています。

4.再帰関数は再帰呼び出しが無限ループを避けるために終了することができ文が含まれている必要があります。

戻り値:

    書式#include <stdio.hに>
     
    int型の楽しい(int型n)は、
    {
        もし(N> 3 リターンN。
        printf(" 1番目-レベル:%dの住所:%D \ N "、N&N)。
        INT結果=楽しさ(N + 1 )。
        printf(" 2番目-レベル:%dの住所:%D \ N "、N&N)。
        printf(" 2番目-結果:%D \ n " 、結果)。
        返すのn;
    }
     
    int型のmain()
    {
        int型の結果=楽しい(1 );
        printf(" メイン-結果:%D \ n " 、結果)。
        リターン 0 ;
    }

 



出力:

 
オリジナルリンクします。https://blog.csdn.net/caoshangpa/article/details/80362743

おすすめ

転載: www.cnblogs.com/yanwei-wang/p/11999044.html