<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                上章中我提到一個函數調用另一個函數是符合語法的,而且我們已經見過好幾個例子。但我還沒有告訴你們,一個函數調用它自己也是合法的。這是件好事,理由可能不那么顯而易見,但事實證明它是一個程序能做的最具魔力也最有趣的事情之一。 例如,下面這個函數: ~~~ void countdown( int n) { if (n == 0) { cout << "Blastoff! << endl; } else { cout << n << endl; countdown (n-1); } } ~~~ 函數名是countdown,它把單個整數作為參數,如果參數是0,則輸出單詞“Blastoff”。否則輸出這個參數,然后調用countdown函數--也即它自身--傳入n-1作為輸入參數。 如果我們這么調用這函數,會發生什么呢? ~~~ void main () { countdown (3); } ~~~ countdown從n=3開始執行,由于n不為0,所以它輸出值3,然后調用它自己... countdown從n=2開始執行,由于n不為0,所以它輸出值2,然后調用它自己... countdown從n=1開始執行,由于n不為0,所以它輸出值2,然后調用它自己... countdown從n=0開始執行,由于n為0,所以它輸出單詞“Blastoff!”,然后返回。 countdown得到返回值n=1。 countdown得到返回值n=2。 countdown得到返回值n=3。 然后你會回到main函數(多美妙的一次旅行!)。因此輸出看起來會是這樣: ~~~ 3 2 1 “Blastoff!” ~~~ 作為第二個例子,讓我們再來看看函數newLine和threeLine。 ~~~ void newLine() [ cout << endl; } void threeLine() { newLine(); new Line(); new Line(); } ~~~ 盡管它們奏效,但如果我希望再輸出2個或者106個換行符,它們并不能幫我們太多。一種更好的替代方法是這樣: ~~~ void nLines(int n){ if (n > 0) { cout << endl; nLines (n-1); } } ~~~ 這段程序和countdown很相似,只要n大于0,它就會輸出一個換行符,然后調用它自身來輸出另外的n-1行。因此,總的換行符個數是1+(n-1), 最后得到n 一個函數調用它自身的過程被稱為**遞歸**,這些函數被稱為遞歸的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看