O que é uma chamada recursiva?

Na programação, uma chamada recursiva é um comando dentro de uma sub -rotina ou função que informa ao programa para executar a mesma sub -rotina novamente. O desempenho repetido pode ser o resultado direto da função ou uma segunda função pode ser acionada que, por sua vez, se refere à primeira função. Uma chamada recursiva tem algumas semelhanças com o temido loop infinito, mas a sub -rotina sempre tem uma declaração condicional que diz ao programa quando parar de repetir a recursão.

O conceito de recursão talvez seja melhor ilustrado através do uso de um exemplo. Suponha que um carpinteiro esteja aplicando novas telhas em uma casa. Para começar, ele deve carregar um pacote de telhas para o telhado. Depois de acertar o primeiro pacote no lugar, ele deve descer a escada, recuperar outro pacote e pregar -o no lugar. O processo continua como uma série de "GO, busca, retornar" até que a última telha seja aplicada. Nesse ponto, o carpinteiro está livre para passar para o próximo trabalho ou ir para casa.

Embora o exemplo iS uma simplificação excessiva, ele contém todos os elementos de uma chamada recursiva. Há um ponto de partida, o carpinteiro deve recuperar o que precisa, retornar ao início e, quando a condição final for atendida, pare. Isso é basicamente o que o programa faz; Começa, implementa uma ação, retorna a si mesmo e termina quando a condição final ocorre.

A condição final é chamada de caso base. É essencial para todas as chamadas recursivas; Sem ele, a função continuaria a se repetir. Na melhor das hipóteses, isso resulta em drenar os recursos de memória do sistema. Normalmente, a sobrecarga trava o programa em algum momento, mas quando o problema é descoberto, danos significativos podem ser causados.

Programadores experientes podem reconhecer a semelhança entre uma chamada recursiva e um loop "para" ou "enquanto". Se, por exemplo, o objetivo é encontrar a contagem total de estoque de todas as ações com a parte nUmbers Maior que 999, um loop "para" diz ao programa para localizar todas as instâncias de qualificação e um loop "while" diz ao programa para executar o loop apenas enquanto a condição declarada é válida. Pode-se dizer que uma chamada recursiva combina algumas das características desses loops com uma declaração "if-then-else"; Se essa condição for verdadeira, faça isso, ou faça algo diferente se a condição for falsa. A recursão normalmente permite um código mais compacto, no entanto, e permite que o problema seja transmitido para a função mais próxima do ponto em que é necessário.

OUTRAS LÍNGUAS

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

Como podemos ajudar? Como podemos ajudar?