【Swift递归介绍和用法详细解释】反复调用自身的函数称为递归函数, 此技术称为递归。创建递归函数时, 必须创建一个条件, 以使函数不会无限期地调用自身。
例:
func recurse() {//statementsrecurse()}recurse()
文章图片
你可以在上图中看到无限期执行递归。为了摆脱这类不确定的递归, 我们使用控制语句。
示例:Swift 4程序打印N个正数
func countDownToZero(num: Int) {print(num)if num >
0 {countDownToZero(num: num - 1)}}print("Countdown:")countDownToZero(num:6)
输出
Countdown:6543210
你可以在上面的程序中看到语句print(” Countdown:” )提供输出, 而语句countDownToZero(num:3)调用带有参数Integer的函数。
执行countDownToZero()函数中的语句, 如果满足num> 0的条件, 则再次调用countDownToZero()函数作为countDownToZero(num:num-1)。
当不满足条件时, 函数调用不会完成, 并且递归会停止。
执行步骤
Steps | 函数调用 | Printed | 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 | 否(递归结束) |
func findFactorial(of num: Int) ->
Int {if num == 1 {return 1} else {return num * findFactorial(of:num - 1)}}let x = 6let result = findFactorial(of: x)print("The factorial of \(x) is \(result)")
输出
The factorial of 6 is 720
执行步骤
Steps | Argument passed | 退货声明 | Value |
---|---|---|---|
1 | 6 | 返回6 * findFactorial(of:5) | 6 * findFactorial(的:5) |
2 | 5 | 返回5 * findFactorial(of:4) | 6 * 5 findFactorial(of:4) |
3 | 4 | 返回4 * findFactorial(of:3) | 6 * 5 * 4 findFactorial(of:3) |
4 | 3 | 返回3 * findFactorial(of:2) | 6 * 5 * 4 * 3 findFactorial(of:2) |
5 | 2 | 返回2 * findFactorial(of:1) | 6*5*4*3*2 findFactorial(of:1) |
6 | 1 | return 1 | 6*5*4*3*2*1 |
推荐阅读
- Swift字典介绍和用法示例
- 10分钟10行代码开发APP(delphi 应用案例)
- Android Gradle 多环境URL请求设置
- ApplicationContextAware 接口作用
- ADB命令获取Android UID
- Android获取网络状态
- 知买app是什么-知买app下载
- [Android P]Android P版本 新功能介绍和兼容性处理
- [Android]Implementation vs API dependency