Baixe o app para aproveitar ainda mais
Prévia do material em texto
Função recursiva Olá estudante! Você se lembra do algoritmo que calcula o fatorial de um número, o qual vimos na aula sobre estruturas de repetição? Customização Dúvidas ao tutorUnidade 1 / Aula 3 Recursividade 100% Introdução da aula Função recursiva Função recursiva somatória Recursividade em cauda Vídeoaula: Recursividade Vídeoaula: Exercício Funções e Recursividade Conclusão Referências Fe ed ba ck Para implementar computacionalmente uma solução desse tipo, há as estruturas de repetição, como o for, entretanto essa técnica não é a única opção, já que você também pode utilizar a recursividade, assunto central desta aula. Nesta unidade, apresentamos as funções. Vimos como criar uma função, qual sua importância dentro de uma implementação e estudamos a saída de dados de uma função, bem como a entrada, feita por meio dos parâmetros. Entre as funções existe uma categoria especial chamada de funções recursivas. Para começarmos a nos apropriar dessa nova técnica de programação, primeiro vamos entender o significado da palavra recursão. Ao consultar diversos dicionários, como o Houaiss ou o Aulete, temos como resultado que a palavra recursão (ou recursividade) está associada à ideia de recorrência de uma determinada situação. Quando trazemos esse conceito para o universo da programação, deparamo-nos com as funções recursivas. Nessa técnica, uma função é dita recursiva quando ela chama a si própria ou, nas palavras de Soffner: “Recursividade é a possibilidade de uma função chamar a si mesma” (SOFFNER, 2013, p. 107). A sintaxe para implementação de uma função recursiva nada difere das funções gerais, ou seja, deverá ter um tipo de retorno, o nome da função, os parênteses e os Unidade 1 / Aula 3 Recursividade 100% Introdução da aula Função recursiva Função recursiva somatória Recursividade em cauda Vídeoaula: Recursividade Vídeoaula: Exercício Funções e Recursividade Conclusão Referências Fe ed ba ck parâmetros quando necessário. A diferença estará no corpo da função, pois a função será invocada dentro dela mesma. Observe a figura - Algoritmo para função recursiva. Nela, ilustramos a construção da função, bem como a chamada dela, primeiro na função principal e depois dentro dela mesma. Algoritmo para função recursiva. Fonte: elaborada pelos autores. _______ Unidade 1 / Aula 3 Recursividade 100% Introdução da aula Função recursiva Função recursiva somatória Recursividade em cauda Vídeoaula: Recursividade Vídeoaula: Exercício Funções e Recursividade Conclusão Referências Fe ed ba ck 🔁 Assimile Em termos de sintaxe, uma função recursiva difere de outras funções simplesmente pelo fato de apresentar, em seu conjunto de comandos, uma chamada a si própria. _______ Embora a sintaxe da função recursiva seja similar à das não recursivas, o funcionamento de ambas é bastante distinto e o mau uso dessa técnica pode acarretar uso indevido de memória, muitas vezes chegando a travar a aplicação e o sistema (MANZANO, 2015). Para entender o processo, vamos estabelecer alguns pontos de atenção: a função recursiva chama a si própria até que um ponto de parada seja estabelecido. O ponto de parada poderá ser alcançado por meio de uma estrutura condicional ou por meio de um valor informado pelo usuário. uma função apresenta em seu corpo variáveis e comandos, os quais são alocados na memória de trabalho. No uso de uma função recursiva, os recursos (variáveis e comandos) são alocados (instanciados) em outro local da memória, ou seja, para cada chamada da função, novos espaços são destinados à execução do programa. E é justamente por esse motivo que o ponto de parada é crucial. as variáveis criadas em cada instância da função na memória são independentes, ou seja, mesmo as variáveis tendo nomes iguais, cada uma tem Unidade 1 / Aula 3 Recursividade 100% Introdução da aula Função recursiva Função recursiva somatória Recursividade em cauda Vídeoaula: Recursividade Vídeoaula: Exercício Funções e Recursividade Conclusão Referências Fe ed ba ck seu próprio endereço de memória e a alteração do valor em uma não afetará a outra. Para te auxiliar na compreensão desse mecanismo observe a figura – Mecanismo da função recursiva. A instância 1 representa a primeira chamada à função funcaoRecursiva(), esta, por sua vez, tem em seu corpo um comando que invoca a si mesma; nesse momento é criada a segunda instância dessa função na memória de trabalho. Veja que um novo espaço é alocado, com variáveis e comandos, e, como a função é recursiva, novamente ela chama a si mesma, criando, então, a terceira instância da função. Dentro da terceira instância, uma determinada condição de parada é satisfeita, nesse caso, a função deixa de ser instanciada e passa a retornar valores. Unidade 1 / Aula 3 Recursividade 100% Introdução da aula Função recursiva Função recursiva somatória Recursividade em cauda Vídeoaula: Recursividade Vídeoaula: Exercício Funções e Recursividade Conclusão Referências Fe ed ba ck Mecanismo da função recursiva. Fonte: elaborada pelos autores. a partir do momento que a função recursiva alcança o ponto de parada, cada instância da função passa a retornar seus resultados para a instância anterior (a que fez a chamada). No caso da figura – Mecanismo da função recursiva –, a instância três retornará para a dois, e a dois retornará para a um. Veja que, se o ponto de parada não fosse especificado na última chamada, a função seria instanciada até haver um estouro de memória. Unidade 1 / Aula 3 Recursividade 100% Introdução da aula Função recursiva Função recursiva somatória Recursividade em cauda Vídeoaula: Recursividade Vídeoaula: Exercício Funções e Recursividade Conclusão Referências Fe ed ba ck Toda função recursiva deve ter uma instância com um caso que interromperá a chamada a novas instâncias. Essa instância é chamada de caso base, pois representa o caso mais simples, que resultará na interrupção. _______ 💭 Reflita Toda função recursiva tem que dispor de um critério de parada. A instância da função que atenderá a esse critério é chamada de caso base. Um programador que implementa de maneira equivocada o critério de parada, acarretará um erro somente na sua aplicação, ou tal erro poderá afetar outras partes do sistema? Avalie este conteúdo Escolha de 1 a 5 estrelas Unidade 1 / Aula 3 Recursividade 100% Introdução da aula Função recursiva Função recursiva somatória Recursividade em cauda Vídeoaula: Recursividade Vídeoaula: Exercício Funções e Recursividade Conclusão Referências Fe ed ba ck Conteúdo anterior Próximo conteúdoUnidade 1 / Aula 3 Recursividade 100% Introdução da aula Função recursiva Função recursiva somatória Recursividade em cauda Vídeoaula: Recursividade Vídeoaula: Exercício Funções e Recursividade Conclusão Referências Fe ed ba ck
Compartilhar