Recursión rápida (con ejemplos)

En este artículo, aprenderá a crear una función recursiva; una función que se llama a sí misma.

Una función que se llama a sí misma se conoce como función recursiva. Y esta técnica se conoce como recursividad. Al crear una función recursiva, debe crear una condición para que la función no se llame a sí misma indefinidamente (infinitamente).

¿Cómo funciona la recursividad en Swift?

 func recurse () (// declaraciones recurse ()) recurse () 

La siguiente figura muestra cómo funciona la recursividad llamándose a sí misma una y otra vez.

En el diagrama de flujo anterior, la recursividad se ejecuta infinitamente. Sin embargo, casi todas las veces, crea una recursividad que se ejecuta hasta que se cumple alguna condición.

Para evitar la recursividad infinita, utilice la llamada recursiva dentro de las declaraciones condicionales Swift, por ejemplo, declaración if … else.

Ejemplo 1: imprimir N números positivos

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

Cuando ejecute el siguiente programa, la salida será:

 Cuenta regresiva: 3 2 1 0

En el programa anterior, la declaración print("Countdown:")genera Countdown: en la consola. Y la declaración countDownToZero(num:3)llama a la función que toma un parámetro Integer.

La instrucción dentro de la función se countDownToZero()ejecuta y si num> 0se cumple la condición , la función countDownToZero()se llama nuevamente como countDownToZero(num: num - 1).

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

Veamos esto en pasos

Pasos de ejecución
Pasos Llamada de función Impreso num> 0?
1 countDownToZero(3) 3 si
2 countDownToZero(2) 2 si
3 countDownToZero(1) 1 si
4 countDownToZero(0) 0 No (termina)

Ejemplo 2: Encuentra factorial de un número

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

Cuando ejecute el siguiente programa, la salida será:

 El factorial de 4 es 24

¿Cómo funciona este ejemplo?

Veamos esto en pasos

Pasos de ejecución
Pasos El argumento pasó Declaración de devolución Valor
1 4 return 4 * factorial(of:3) 4 * factorial (de: 3)
2 3 return 3 * factorial(of:2) 4 * 3 * factorial (de: 2)
3 2 return 2 * factorial(of:1) 4 * 3 * 2 * factorial (de: 1)
4 1 return 1 4 * 3 * 2 * 1

Por lo general, la recursividad se usa como reemplazo de la iteración cuando la solución a un problema se puede encontrar en aproximadamente dos pasos. El primer paso busca una solución, si no repite el proceso.

Articulos interesantes...