Blog Formação DEV

O que é recursividade?

A recursividade é um conceito fundamental da programação, caso você ainda não tenha ouvido falar sobre, fica tranquilo, ainda vai ouvir bastante. Neste artigo é abordado esse tema e através de exemplos práticos é mostrado como a recursividade funciona e como utilizá-la.
O que é recursividade?
Texto de: Cristina Leandro

Conceito

De forma bem resumida, recursividade é o ato de chamar a si mesmo. Uma função recursiva é uma função que se chamará até uma determinada condição se cumpra.

Sintaxe

Você pode escrever a uma função recursiva em JavaScript assim:

function recursao() {
    // código da função
    recursao();
    //chamada da função dentro da própria função
}

recursao();

Dessa forma, a função recursao() irá chamar a si mesma. Nesse caso, não especificamos a condição que a função deve atingir, ou seja, acabamos de criar uma função com loop infinito e para evitar que a função caia nesse loop devemos escrever uma condição de parada.

Uma forma interessante de especificar essa condição é usando a estrutura de controle if/else, veremos abaixo como fica:

function recursao() {
    if(condição) {
        recursao();
    }
    else {
        //aqui a função recursao() é parada de ser chamada
    }
}

recursao();

Então, agora ainda temos uma função que chamará ela mesma, mas quando a condição é cumprida ela sairá do loop de continuar se chamando e se chamando, e se chamando, e se chamando…

Exemplo

Agora, veremos como a recursão funciona na prática. Um exemplo bacana para consolidar o conceito é de uma função que calcula o fatorial de um número.

Na matemática, se calcula o fatorial multiplicando um número por todos os seus antecessores até chegar ao número 1, por exemplo:

1! = 1
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 6
4! = 4 * 3 * 2 * 1 = 24
5! = 5 * 4 * 3 * 2 * 1 = 120

Abaixo, usaremos uma função recursiva para fazer esse cálculo:

function fatorial(numero){  //criando a função fatorial
    //especificando a condição de "se o número for zero o programa retornará 1."
    if (numero == 0){ 
        return 1
    } else { //Se o número for maior que 0...
        return numero * fatorial(numero -1)// o programa chamará a si mesmo recursivamente diminuindo o número.
    }
}

Ao chamar a função na linha de baixo, teremos o resultado esperado:

console.log(fatorial(5))

//output: 120

Confusão

Não se deve confundir uma recursão com loops ou laços de repetição como for, while, do/while…, etc. A recursão é um mecanismo para chamar uma função dentro da mesma função e o loop é uma estrutura de controle que permite executar um bloco de código com um conjunto de instruções várias vezes.

Enquanto na função recursiva uma instrução condicional é necessária no corpo da função apenas para interromper a execução, em um laço, a própria sintaxe dessa estrutura de repetição contém instruções para interromper a iteração. Um exemplo usando while:

while (condição) {
  // código para ser executado
}

No laço, a condição de parada já é premeditada pela sintaxe da estrutura. A cada execução, a condição é verificada. Já a função recursiva, como visto anteriormente nesse artigo, pode ser escrita sem a instrução condicional. Isso não gerará nenhuma mensagem de erro, mas isso não significa que você deve estruturar sua função assim, pois isso fará com que sua função entrar em um loop infinito, o que não é nada legal.

Bônus: Exercícios práticos

Essa sessão conta com três exercícios relacionados ao tema para que você possa praticar e assim consolidar esse conceito:

01: Crie uma função recursiva para calcular o n-ésimo termo da sequência de Fibonacci.

02: Crie uma função recursiva que faz uma contagem regressiva a partir de um número n até 0.

03: Crie uma função recursiva que calcula a soma dos números naturais de 1 a n⁣, por exemplo, a soma de 1 a 5 é 15.

Conclusão

Nesse artigo entendemos o conceito e a prática da recursividade, vimos alguns exemplos e entendemos que não devemos confundir a recursão com estruturas de laços de repetição. Esse é um erro comum entre iniciantes e ocorre pela complexidade do conceito da recursão, portanto, devemos nos atentar aos detalhes.

Sobre o autor
Cod3r

Cod3r

Com mais de 400 mil alunos, a Cod3r é uma das principais escolas de tecnologia do País. Um de seus produtos mais importantes é a Formação DEV, com objetivo de preparar os profissionais para o mercado.

Ótimo! Inscreveu-se com sucesso.

Bem-vindo de volta! Registou-se com sucesso.

Assinou com sucesso o Blog Formação DEV .

Sucesso! Verifique o seu e-mail para obter o link mágico para se inscrever.

As suas informações de pagamento foram atualizadas.

Seu pagamento não foi atualizado.