<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 功能強大 支持多語言、二開方便! 廣告
                # C++ 遞歸 > 原文: [https://beginnersbook.com/2017/08/cpp-recursion/](https://beginnersbook.com/2017/08/cpp-recursion/) 函數調用自身的過程稱為遞歸,相應的函數稱為**遞歸函數**。理解遞歸的流行示例是階乘函數。 **階乘函數:** `f(n) = n * f(n-1)`,基本條件:如果`n <= 1`則`f(n)= 1`。不要擔心我們將討論什么是基本條件,以及為什么它很重要。 在下圖中。我已經證明了在函數達到基本條件之前,階乘函數如何調用自身。 ![C++ recursion](https://img.kancloud.cn/7d/e5/7de5031b95a46d8443378ee4229234cc_600x400.jpg) 讓我們用 C++ 程序解決問題。 ## C++ 遞歸示例:階乘 ```cpp #include <iostream> using namespace std; //Factorial function int f(int n){ /* This is called the base condition, it is * very important to specify the base condition * in recursion, otherwise your program will throw * stack overflow error. */ ? ?if (n <= 1) ? ? ? ? return 1; ? ?else? ? ? ? return n*f(n-1); } int main(){ int num; ? cout<<"Enter a number: "; ? ?cin>>num; ? ?cout<<"Factorial of entered number: "<<f(num); return 0; } ``` **輸出:** ```cpp Enter a number: 5 Factorial of entered number: 120 ``` ### 基本情況 在上面的程序中,您可以看到我在遞歸函數中提供了基本條件。條件是: ```cpp if (n <= 1) ? ? ? ? return 1; ``` 遞歸的目的是將問題分成較小的問題,直到達到基本條件。例如,在上述階乘程序中,我通過調用較小的階乘函數`f(n-1)`來求解階乘函數 `f(n)`,這一直重復發生,直到`n`值達到基本條件(`f(1) = 1`)。如果未在遞歸函數中定義基本條件,則會出現堆棧溢出錯誤。 ## 直接遞歸與間接遞歸 **直接遞歸:**當函數調用自身時,它被稱為直接遞歸,我們上面看到的例子是直接遞歸示例。 **間接遞歸:**當函數調用另一個函數并且該函數調用這個函數時,這稱為間接遞歸。例如:函數 A 調用函數 B,函數 B 調用函數 A。 ### C++ 中的間接遞歸示例 ```cpp #include <iostream> using namespace std; int fa(int); int fb(int); int fa(int n){ if(n<=1) return 1; else return n*fb(n-1); } int fb(int n){ if(n<=1) return 1; else return n*fa(n-1); } int main(){ int num=5; ? ?cout<<fa(num); return 0; } ``` **輸出:** ```cpp 120 ```
                  <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>

                              哎呀哎呀视频在线观看