Neste artigo, você aprenderá a criar uma função recursiva; uma função que chama a si mesma.
Uma função que chama a si mesma é conhecida como função recursiva. E, esta técnica é conhecida como recursão. Ao criar uma função recursiva, você deve criar uma condição para que a função não se chame indefinidamente (infinitamente).
Como funciona a recursão em Swift?
função recurse () (// declarações recurse ()) recurse ()
A figura abaixo mostra como funciona a recursão, chamando a si mesma repetidamente.
No fluxograma acima, a recursão é executada infinitamente. No entanto, quase todas as vezes, você cria uma recursão que executa até que alguma condição seja atendida.
Para prevenir a recursão infinita, use a chamada recursiva dentro das declarações condicionais Swift, por exemplo, declaração if… else.
Exemplo 1: 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ê executa o programa a seguir, a saída será:
Contagem regressiva: 3 2 1 0
No programa acima, a instrução print("Countdown:")
produz Countdown: no console. E a instrução countDownToZero(num:3)
chama a função que recebe um parâmetro Integer
.
A instrução dentro da função é countDownToZero()
executada e se a condição num> 0
for atendida, a função countDownToZero()
é chamada novamente como countDownToZero(num: num - 1)
.
Se a condição não for atendida, a chamada de função não será realizada e a recursão será interrompida.
Vamos ver isso em etapas
Etapas de execuçãoPassos | Chamada de função | Impresso | num> 0? |
---|---|---|---|
1 | countDownToZero(3) | 3 | sim |
2 | countDownToZero(2) | 2 | sim |
3 | countDownToZero(1) | 1 | sim |
4 | countDownToZero(0) | 0 | Não (termina) |
Exemplo 2: Encontre o fatorial de um 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)")
Quando você executa o programa a seguir, a saída será:
O fatorial de 4 é 24
Como funciona este exemplo?
Vamos ver isso em etapas
Etapas de execuçãoPassos | Argumento aprovado | Declaração de devolução | Valor |
---|---|---|---|
1 | 4 | return 4 * factorial(of:3) | 4 * fatorial (de: 3) |
2 | 3 | return 3 * factorial(of:2) | 4 * 3 * fatorial (de: 2) |
3 | 2 | return 2 * factorial(of:1) | 4 * 3 * 2 * fatorial (de: 1) |
4 | 1 | return 1 | 4 * 3 * 2 * 1 |
Normalmente, a recursão é usada como uma substituição da iteração quando a solução para um problema pode ser encontrada em cerca de duas etapas. A primeira etapa busca uma solução, caso não repita o processo.