<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 功能強大 支持多語言、二開方便! 廣告
                # Python 遞歸 > 原文: [https://www.programiz.com/python-programming/recursion](https://www.programiz.com/python-programming/recursion) #### 在本教程中,您將學習創建一個遞歸函數(一個調用自身的函數)。 ## 什么是遞歸? 遞歸是根據自身定義某些內容的過程。 一個物理世界的例子是放置兩個相互面對的平行反射鏡。 它們之間的任何對象都將遞歸地反映出來。 * * * ## Python 遞歸函數 在 Python 中,我們知道[函數](/python-programming/function)可以調用其他函數。 函數甚至可能會自行調用。 這些類型的構造稱為遞歸函數。 下圖顯示了稱為`recurse`的遞歸函數的工作。 ![Python Recursive Function](https://img.kancloud.cn/21/09/210958317e60e46a6e1223d5f4983954_488x272.png "Python Recursive Function") Python 中的遞歸函數 以下是查找整數的階乘的遞歸函數的示例。 數字的階乘是從 1 到該數字的所有整數的乘積。 例如,階乘 6(表示為`6!`)為`1 * 2 * 3 * 4 * 5 * 6 = 720`。 ### 遞歸函數示例 ```py def factorial(x): """This is a recursive function to find the factorial of an integer""" if x == 1: return 1 else: return (x * factorial(x-1)) num = 3 print("The factorial of", num, "is", factorial(num)) ``` **輸出** ```py The factorial of 3 is 6 ``` 在上面的示例中,`factorial()`是一個遞歸函數,它調用了自己。 當我們使用正整數調用此函數時,它將通過減少數量來遞歸調用自身。 每個函數將數字乘以其下面的數字的階乘,直到等于 1。 可以在以下步驟中說明此遞歸調用。 ```py factorial(3) # 1st call with 3 3 * factorial(2) # 2nd call with 2 3 * 2 * factorial(1) # 3rd call with 1 3 * 2 * 1 # return from 3rd call as number=1 3 * 2 # return from 2nd call 6 # return from 1st call ``` 讓我們看一下顯示發生了什么的逐步過程的圖像: ![Factorial by a recursive method](https://img.kancloud.cn/0a/a4/0aa49008fbb525d532e0611918cf0b94_824x976.png "Factorial by a recursive method") 遞歸階乘函數的原理 當數字減少到 1 時,我們的遞歸結束。這稱為基本條件。 每個遞歸函數必須具有停止遞歸的基本條件,否則該函數將無限調用自身。 Python 解釋器限制了遞歸的深度,以幫助避免無限遞歸,從而導致棧溢出。 默認情況下,最大遞歸深度為 1000。 如果超出限制,則結果為`RecursionError`。 讓我們看一個這樣的條件。 ```py def recursor(): recursor() recursor() ``` **輸出**: ```py Traceback (most recent call last): File "<string>", line 3, in <module> File "<string>", line 2, in a File "<string>", line 2, in a File "<string>", line 2, in a [Previous line repeated 996 more times] RecursionError: maximum recursion depth exceeded ``` * * * ## 遞歸的優點 1. 遞歸函數使代碼看起來干凈整潔。 2. 可以使用遞歸將復雜的任務分解為更簡單的子問題。 3. 使用遞歸比使用嵌套更容易生成序列。 * * * ## 遞歸的缺點 1. 有時,遞歸背后的邏輯很難遵循。 2. 遞歸調用很昂貴(效率低??),因為它們占用大量內存和時間。 3. 遞歸函數很難調試。
                  <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>

                              哎呀哎呀视频在线观看