English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift递归

En este artículo, aprenderás a crear funciones recursivas. Una función que se llama a sí misma.

llamada a sí mismaFunciónSe llama a la función recursiva. Y esta técnica se llama recursión. Al crear una función recursiva, debe crear condiciones para que la función no se llame a sí misma de manera infinita.

¿Cómo funciona la recursión en Swift?

func recurse() {
    //instrucciones
    recurse()
}
recurse()

La siguiente imagen muestra la forma de la llamada recursiva.

En el diagrama de flujo anterior, la recursión se ejecuta infinitamente. En ciertos casos, es posible que necesite crear una recursión que se ejecute hasta que se cumplan ciertas condiciones.

Para evitar la recursión infinita, utilice llamadas recursivas en las sentencias condicionales de Swift, por ejemploif ... else instrucción

示例1Imprimir N números positivos

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

当您运行以下程序时,输出将是:

Countdown:
3
2
1
0

En el programa anterior, la instrucción print("Countdown:") escribe en la consolaCountdown:。Esta instrucción llama a la función countDownToZero con un parámetro de tipo Integer, countDownToZero(num:3) 。

countDownToZero() ejecuta las instrucciones internas de la función, si se cumple la condición num > 0, countDownToZero() llama nuevamente a la función countDownToZero(num: num - 1)。

Si no se cumple la condición, no se realiza la llamada a la función y se detiene la recursión.

Vamos a ver los pasos específicos

执行步骤
步骤Llamada a la funciónImprimir¿El número es mayor que 0?
1countDownToZero(3)3
2countDownToZero(2)2
3countDownToZero(1)1
4countDownToZero(0)0否(结束)

示例2:查找数字的阶乘

func factorial(of num: Int) -> Int
    if num == 1 {
        返回 1
    }
        return num * factorial(of:num - 1)
    }
}
let x = 4
let result = factorial(of: x)
print("The factorial of \(x) is \(result)")

当您运行以下程序时,输出将是:

The factorial of 4 是 24

这个实例是如何工作的?

让我们逐步看一下

执行步骤
步骤传递的参数返回语句
14返回 4 * factorial(of:3)4 * factorial(of:3)
23返回 3 * factorial(of:2)4 *3 * factorial(of:2)
32返回 2 * factorial(of:1)4 * 3 *2 * factorial(of:1)
41返回 14 * 3 * 2 * 1

当问题解决方案可以在大约两个步骤中找到时,通常将递归用作迭代的替代品。