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

Recursão Swift

Neste artigo, você aprenderá a criar funções recursivas. Uma função que se chama a si mesma.

que se chama a si mesmafunçãoChamada de função recursiva. E essa técnica é chamada de recursão. Quando se cria uma função recursiva, é necessário criar condições para que a função não chame a si mesma indefinidamente.

Como a recursão funciona no Swift?

func recurse() {
    //instruções
    recurse()
}
recurse()

A figura a seguir mostra como são feitas as chamadas recursivas.

No diagrama de fluxo acima, a recursão é executada infinitamente. Em algumas situações, você pode precisar criar uma recursão que continuará a executar até que sejam atendidas certas condições.

Para evitar recursão infinita, use chamadas recursivas dentro das instruções condicionais em Swift, por exemploif ... else instrução

Exemplo1:imprimir N números positivos

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

Quando você executar o seguinte programa, a saída será:

Countdown:
3
2
1
0

No programa acima, a instrução print("Countdown:") imprime no consoleCountdown:。Esta instrução chama a função countDownToZero com parâmetro do tipo Integer countDownToZero(num:3) 。

countDownToZero() executa as instruções internas da função, se a condição num > 0 for atendida, countDownToZero() será chamada novamente a função countDownToZero(num: num - 1)。

Se não for atendida a condição, a chamada de função não será executada e a recursão será encerrada.

Vamos olhar para os passos específicos

Executar Passo
Passochamada de funçãoimprimirnum > 0 ?
1countDownToZero(3)3Sim
2countDownToZero(2)2Sim
3countDownToZero(1)1Sim
4countDownToZero(0)0Não (Fim)

Exemplo2:Procurar o fatorial de um número

func fatorial(de num: Int) -> Int {
    if num == 1 {
        return 1
    } else {
        return num * fatorial(de:num - 1)
    }
}
let x = 4
let result = fatorial(de: x)
print("O fatorial de \(x) é \(result)")

Quando você executar o seguinte programa, a saída será:

O fatorial de 4 é 24

Como este exemplo funciona?

Vamos ver passo a passo

Executar Passo
PassoParâmetros PassadosSentença de RetornoValor
14return 4 * fatorial(de:3)4 * fatorial(de:3)
23return 3 * fatorial(de:2)4 *3 * fatorial(de:2)
32return 2 * fatorial(de:1)4 * 3 *2 * fatorial(de:1)
41return 14 * 3 * 2 * 1

Quando a solução do problema pode ser encontrada em aproximadamente dois passos, geralmente a recursão é usada como substituto para a iteração.