O que é uma recursão da cauda?

A recursão de cauda é um tipo de chamada de método de programação em que um método se chama e retorna imediatamente o valor dessa segunda chamada. Em outras palavras, a recursão da cauda ocorre quando a instrução final dentro de um método é outra chamada para o mesmo método. Os parâmetros na segunda chamada de método geralmente são diferentes dos da primeira, mas isso não é necessário. Para que essa recursão funcione, o método chamado dentro de si deve retornar um valor concreto, como um número, sequência ou outro objeto. Métodos nulos, que não retornam um valor, não funcionam bem para recursão.

O requisito de que uma chamada recursiva deve ser a última instrução em seu método de chamada não significa necessariamente que a chamada recursiva seja a última linha do método. Uma chamada de recursão de cauda adequada também pode ser encontrada dentro de uma estrutura de controle, o que significa que, no código-fonte, a estrutura de controle pode finalizar o método e não a chamada. A distinção importante nesse caso é que uma estrutura de controle não é uma instrução de programação, mas uma parte interna da linguagem do computador.

A recursão da cauda existe em muitas linguagens de computador, incluindo Java e C ++. Freqüentemente, essas chamadas recursivas podem ser reescritas usando outros meios, como loops, while loops ou instruções goto. A utilidade da recursão é encontrada ao criar muitas chamadas seqüenciais para o mesmo método. A recursão geralmente é a maneira mais limpa e fácil de realizar tarefas repetitivas.

Um exemplo comum de recursão da cauda é um método que calcula o fatorial de um número. Esse processo é ideal porque, começando em qualquer número, todo número antes que ele seja multiplicado. Portanto, para encontrar o fatorial de 5, o processo adequado para fazer isso seria multiplicar 5 * 4 * 3 * 2 * 1. A recursão ocorre devido à forma como o método fatorial está estruturado: se o fatorial for 1, retorne 1; caso contrário, retorne o fatorial do número dado ao método menos um. Esse método também é útil porque pode ser escrito de forma equivalente usando qualquer tipo de recursão de cauda, ​​com ou sem uma instrução de controle em torno de uma chamada final de método.

A recursão da cauda é apenas um exemplo dos vários tipos de recursão. O conceito em todos os tipos de recursão é essencialmente o mesmo, que de alguma maneira um método se chama. Desses tipos, a distinção de recursão de cauda é que o valor de uma chamada recursiva é retornado imediatamente e nada mais acontece no método de chamada após essa chamada.

OUTRAS LÍNGUAS

Este artigo foi útil? Obrigado pelo feedback Obrigado pelo feedback

Como podemos ajudar? Como podemos ajudar?