<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Swift 遞歸 > 原文: [https://www.programiz.com/swift-programming/recursion](https://www.programiz.com/swift-programming/recursion) #### 在本文中,您將學習創建遞歸函數。 一個自我調用的函數。 調用自身的[函數](/swift-programming/functions "Swift functions")被稱為遞歸函數。 并且,這種技術稱為遞歸。 創建遞歸函數時,必須創建一個條件,以使函數不會無限期地(無限期地)調用自身。 ## 遞歸在 Swift 中如何工作? ```swift func recurse() { //statements recurse() } recurse() ``` 下圖顯示了遞歸調用的方式。 ![How recursion works in Swift?](https://img.kancloud.cn/4c/2a/4c2ab2c786469f4664eb00ad67233ebc_500x306.png "How recursion works in Swift?") 在上面的流程圖中,遞歸是無限執行的。 但是,幾乎所有情況下,您都會創建一個遞歸,該遞歸將一直執行到滿足某些條件為止。 為防止無限遞歸,請在 [Swift 條件語句](/swift-programming/expressions-statements-blocks#control-flow-statements "Swift control flow statements")中使用遞歸調用,例如[`if...else`語句](/swift-programming/if-else-statement "Swift if-else statement")。 * * * ## 示例 1:打印 N 個正數 ```swift func countDownToZero(num: Int) { print(num) if num > 0 { countDownToZero(num: num - 1) } } print("Countdown:") countDownToZero(num:3) ``` 當您運行以下程序時,輸出將是: ```swift Countdown: 3 2 1 0 ``` 在上述程序中,語句`print("Countdown:")`在控制臺中輸出`Countdown`。 語句`countDownToZero(num:3)`調用帶有參數`Integer`的函數。 執行函數`countDownToZero()`內的語句,如果滿足條件`num > 0`,則再次調用函數`countDownToZero()`作為`countDownToZero(num: num - 1)`。 如果不滿足條件,則函數調用不會完成,并且遞歸會停止。 ### 讓我們逐步來看一下 執行步驟 | 步驟 | 函數調用 | 打印 | `num > 0`? | | --- | --- | --- | --- | | 1 | `countDownToZero(3)` | **3** | 是 | | 2 | `countDownToZero(2)` | **2** | 是 | | 3 | `countDownToZero(1)` | **1** | 是 | | 4 | `countDownToZero(0)` | **0** | 否(結束) | * * * ## 示例 2:查找數字的階乘 ```swift func factorial(of num: Int) -> Int { if num == 1 { return 1 } else { return num * factorial(of:num - 1) } } let x = 4 let result = factorial(of: x) print("The factorial of \(x) is \(result)") ``` 當您運行以下程序時,輸出將是: ```swift The factorial of 4 is 24 ``` ### 這個例子是如何工作的? ![How recursion works for factorial in Swift](https://img.kancloud.cn/3d/ab/3dabf1abb02ea04a028a55d78c626a80_500x918.png "How recursion works for factorial in Swift") ### Let's see this in steps 執行步驟 | 步驟 | 傳遞的參數 | `return`語句 | 值 | | --- | --- | --- | --- | | 1 | 4 | `return 4 * factorial(of:3)` | `4 * factorial(of:3)` | | 2 | 3 | `return 3 * factorial(of:2)` | `4 * 3 * factorial(of:2)` | | 3 | 2 | `return 2 * factorial(of:1)` | `4 * 3 * 2 * factorial(of:1)` | | 4 | 1 | `return 1` | `4 * 3 * 2 * 1` | 當可以在大約兩個步驟中找到問題的解決方案時,通常將遞歸用作迭代的替換。 如果沒有重復該過程,則第一步將搜索解決方案。
                  <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>

                              哎呀哎呀视频在线观看