Swift 递归

Swift 递归

一个反复调用自身的函数被称为递归函数,而这种技术被称为递归。当你创建一个递归函数时,你必须创建一个条件来确保函数不会无限调用自身。

示例

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

Swift 递归

从上面的图表中可以看出,递归是无限执行的。为了摆脱这种无限递归的类型,我们使用控制语句。

示例:Swift 4程序打印N个正数

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

输出:

Countdown:
6
5
4
3
2
1
0

在上面的程序中,print(“Countdown:”)语句会输出结果,而countDownToZero(num:3)语句会调用一个接受一个整数参数的函数。

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

当条件不满足时,函数调用不再进行,递归停止。

执行步骤

Steps Function call Printed Is num > 0 ?
1 countDownToZero(6) 6 Yes
2 countDownToZero(5) 5 Yes
3 countDownToZero(4) 4 Yes
4 countDownToZero(3) 3 Yes
5 countDownToZero(2) 2 Yes
6 countDownToZero(1) 1 Yes
7 countDownToZero(0) 0 No (Recursion Ends)

示例2:Swift 4程序计算一个数的阶乘

func findFactorial(of num: Int) -> Int {
    if num == 1 {
        return 1
    } else {
        return num * findFactorial(of:num - 1)
    }
}

let x = 6
let result = findFactorial(of: x)
print("The factorial of \(x) is \(result)") 

输出:

The factorial of 6 is 720

执行步骤

步骤 传入参数 返回语句
1 6 返回 6 * findFactorial(of:5) 6 * findFactorial(of:5)
2 5 返回 5 * findFactorial(of:4) 6 *5 findFactorial(of:4)
3 4 返回 4 * findFactorial(of:3) 6 54 findFactorial(of:3)
4 3 返回 3 * findFactorial(of:2) 6 54*3 findFactorial(of:2)
5 2 返回 2 * findFactorial(of:1) 65432 findFactorial(of:1)
6 1 返回 1 65432*1

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程