Funções Recursivas no JavaScript

--

Saiba como usar a técnica de recursão para desenvolver uma função recursiva do JavaScript, que é uma função que chama a si mesma.

English version: https://www.javascripttutorial.net/javascript-recursive-function/

Uma função recursiva é uma função que chama a si mesma até encontrar uma instrução de parar. Essa técnica é chamada de recursão.

Se você nunca viu recursão antes, assista esse vídeo:

Suponha que você tenha uma função chamada recurse(). Ela será uma função recursiva caso ela mesma se invoque dentro do seu escopo, dessa forma:

Uma função recursiva sempre precisa ter uma condição que vai parar de invocar ela mesma, caso contrário ela se chamará infinitamente.

Portanto, uma função recursiva normalmente se parece com algo assim:

Geralmente, as funções recursivas são usadas para dividir um grande problema em problemas menores.

Você pode descobrir que elas são muito usadas nas estruturas de dados, como árvores binárias, gráficos e algoritmos de pesquisas binárias e classificação rápida.

Exemplos de funções recursivas no JavaScript

Vamos dar alguns exemplos de como usar as funções recursivas.

1) Um exemplo simples de função recursiva

Suponha que você precise desenvolver uma função que faça a contagem regressiva de um número determinado até chegar em 1. Por exemplo, para fazer a contagem regressiva de 3 até 1:

Confira a função countDown() a seguir:

No momento a função countDown() exibe apenas o número 3.

Para fazer a contagem regressiva do número 3 ao 1, você pode fazer assim:

  • Mostre o número 3;
  • e chame countDown(2) que vai mostrar o número 2;
  • e chame countDown(1) que vai mostrar o número 1.

O código a seguir altera a função countDown() para uma função recursiva:

A chamada countDown(3) será executada até que o tamanho máximo da pilha de chamadas seja excedido, mostrando um erro assim:

Isso porque a função não tem uma condição para parar de se chamar, tornando a execução em um loop infinito.

A contagem regressiva deveria para até quando o próximo número fosse zero, para isso, adicionamos uma condição if dessa forma:

Resultado:

Agora a função countDown() funciona como o esperado.

No entanto, conforme mencionado no tutorial de Tipo Função, o nome da função é uma referência ao objeto de função real.

Se em algum lugar do código, o nome da função for definido como null, a função recursiva irá parar de funcionar.

Por exemplo, o código a seguir resultará em um erro:

Erro:

Como esse script funciona:

  • Primeiro, atribua o nome da função countDown à variável newYearCountDown.
  • Em segundo lugar, defina a referência da função countDown como null.
  • Terceiro, chame a função newYearCountDown.

O código causa um erro porque o corpo da função countDown() faz referência ao nome da função countDown que foi definido como null no momento da chamada da função.

Para corrigir isso, você pode usar uma expressão de função nomeada da seguinte forma:

2) Calcular a soma dos dígitos de um número

Dado um número qualquer, por exemplo 324, calcule a soma dos dígitos:

 3 + 2 + 4 = 9 

Para aplicar a técnica recursiva, você pode usar as seguintes etapas:

Então:

O seguinte código ilustra a função recursiva sumOfDigits():

Como isso funciona:

  • O num%10 retorna o resto da divisão de num por 10, por exemplo:
    324 / 10 = 32 e resta 4 portanto 324 % 10 = 4
  • O Math.floor(num/10) retorna a parte inteira de num dividido por 10:
    324 / 10 = 32,40 portando 32 é a parte inteira.
  • O if(num==0) é a condição que interrompe a chamada da função.

Resumo

  • Uma função recursiva é uma função que chama a si mesma até que seja interrompida .
  • Uma função recursiva sempre tem uma condição que impede a função de chamar a sim mesma em algum momento.

Veja o índice de todos os tutoriais JavaScript

Confira uma série de outros tutoriais JavaScript que eu escrevi, clicando no link abaixo:

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Responses (1)

Write a response