swift递归函数 – Swift最新教程

上一章Swift教程请查看:swift嵌套函数

在本文中,你将学习如何创建递归函数:一个调用自身的函数。

调用自身的函数称为递归函数,这种方法叫做递归,在创建递归函数时,必须创建一个条件,以便函数不会无限地(无限地)调用自己。

在Swift中递归是如何工作的?

func recurse() {
    //statements
    recurse()
}
recurse()

下图显示了递归是如何通过反复调用自身来工作的。

在Swift中递归是如何工作的

在上面的流程图中,递归无限执行。然而,几乎在所有情况下,你都要创建一个递归,直到满足某个条件为止。

为了防止无限递归,在Swift条件语句中使用递归调用,例如if…else语句。

例1:打印N个正数

func countDownToZero(num: Int) {
    print(num)
    if num > 0 {
        countDownToZero(num: num - 1)
    }
}
print("Countdown:")
countDownToZero(num:3)

在上面的程序中,print语句(“Countdown:”)在控制台中输出Countdown:。语句countDownToZero(num:3)调用参数为整数的函数。

执行函数countDownToZero()中的语句,如果满足num > 0的条件,就会再次调用countDownToZero()函数(num: num – 1)。

如果条件不满足,函数调用将不执行,递归将停止。

让我们分步来看

执行步骤

步骤 函数调用 打印 num > 0 ?
1 countDownToZero(3) 3 Yes
2 countDownToZero(2) 2 Yes
3 countDownToZero(1) 1 Yes
4 countDownToZero(0) 0 No (Ends)

例2:求一个数的阶乘

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("\(x) 的阶乘是 \(result)")

这个例子是如何工作的?

Swift中递归求阶乘如何工作

让我们分步来看

执行步骤

步骤 传递参数 返回语句
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

当一个问题的解决方案可以在大约两个步骤中找到时,通常使用递归来代替迭代。第一步是搜索解决方案,如果不重复这个过程的话。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?