Neste tutorial, você aprenderá sobre recursão em JavaScript com a ajuda de exemplos.
A recursão é um processo de auto-chamada. Uma função que chama a si mesma é chamada de função recursiva.
A sintaxe da função recursiva é:
function recurse() ( // function code recurse(); // function code ) recurse();
Aqui, a recurse()
função é uma função recursiva. Ele está se chamando dentro da função.
![](https://cdn.wiki-base.com/6132116/javascript_recursion_with_examples.png.webp)
Uma função recursiva deve ter uma condição para parar de chamar a si mesma. Caso contrário, a função é chamada indefinidamente.
Assim que a condição for atendida, a função para de chamar a si mesma. Isso é chamado de condição básica.
Para evitar a recursão infinita, você pode usar a instrução if… else (ou abordagem semelhante) onde um branch faz a chamada recursiva e o outro não.
Portanto, geralmente é assim.
function recurse() ( if(condition) ( recurse(); ) else ( // stop calling recurse() ) ) recurse();
Um exemplo simples de função recursiva seria a contagem regressiva do valor até 1.
Exemplo 1: Imprimir Números
// program to count down numbers to 1 function countDown(number) ( // display the number console.log(number); // decrease the number value const newNumber = number - 1; // base case if (newNumber> 0) ( countDown(newNumber); ) ) countDown(4);
Resultado
4 3 2 1
No programa acima, o usuário passa um número como um argumento ao chamar uma função.
Em cada iteração, o valor do número diminui em 1 e a função countDown()
é chamada até que o número seja positivo. Aqui newNumber> 0
está a condição básica.
Essa chamada recursiva pode ser explicada nas seguintes etapas:
countDown (4) imprime 4 e chama countDown (3) countDown (3) imprime 3 e chama countDown (2) countDown (2) imprime 2 e chama countDown (1) countDown (1) imprime 1 e chama countDown (0)
Quando o número chega a 0 , a condição básica é atendida e a função não é mais chamada.
Exemplo 2: Encontrar fatorial
// program to find the factorial of a number function factorial(x) ( // if number is 0 if (x === 0) ( return 1; ) // if number is positive else ( return x * factorial(x - 1); ) ) const num = 3; // calling factorial() if num is non-negative if (num> 0) ( let result = factorial(num); console.log(`The factorial of $(num) is $(result)`); )
Resultado
O fatorial de 3 é 6
Quando você chama uma função factorial()
com um número inteiro positivo, ela se chama recursivamente diminuindo o número.
Este processo continua até que o número se torne 1 . Então, quando o número chega a 0 , 1 é retornado.
![](https://cdn.wiki-base.com/6132116/javascript_recursion_with_examples_2.png.webp)
Essa chamada recursiva pode ser explicada nas seguintes etapas:
fatorial (3) retorna 3 * fatorial (2) fatorial (2) retorna 3 * 2 * fatorial (1) fatorial (1) retorna 3 * 2 * 1 * fatorial (0) fatorial (0) retorna 3 * 2 * 1 * 1