Baixe o app para aproveitar ainda mais
Prévia do material em texto
Função recursiva somatória Função recursiva para soma. Fonte: elaborado pela autora. 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 Vamos implementar uma função recursiva que faz a somatória dos antecessores de um número inteiro positivo, informado pelo usuário, ou seja, se o usuário digitar 5, o programa deverá retornar o resultado da soma 5 + 4 + 3 + 2 + 1 + 0. Com base nesse exemplo, você consegue determinar quando a função deverá parar de executar? Veja, a função deverá somar até o valor zero, portanto esse será o critério de parada. Veja a implementação da função no código – Função recursiva para soma –, e a seguir sua explicação. 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 Função recursiva para soma. Fonte: elaborada pelos autores. Teste o código - Função recursiva para soma, utilizando a ferramenta Paiza.io. A execução do programa no código – Função recursiva para soma –, começará na linha 11, pela função principal (main). Na linha 15, a função somar() é invocada, passando como parâmetro um número inteiro digitado pelo usuário. 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 https://paiza.io/projects/JHmisvI9I6sg8TeniVvjrw Nesse momento, a execução “salta” para a linha 2, onde a função é criada. Observe que ela foi criada para retornar e receber um valor inteiro. Na linha 3, o condicional foi usado como critério de parada; veja que, se o valor for diferente (!=) de zero, a execução passa para a linha 8, na qual a função é invocada novamente, mas dessa vez passando como parâmetro o valor menos 1. Quando o valor for zero, retorna-se o próprio valor, isto é, 0. _______ 📝 Exemplificando A figura – Exemplo função somar() –, exemplifica o funcionamento na memória do computador da função somar(). Nessa ilustração, o usuário digitou o valor 2, então a função main() invocará a função somar(2), criando a primeira instância e passando esse valor. O valor 2 é diferente de zero na primeira instância, então, o critério de parada não é satisfatório e a função chama a si própria, criando a segunda instância, mas, agora, passando o valor 1 como parâmetro somar(1). Veja que, na primeira instância, o valor a ser retornado é 2 + ?, pois ainda não se conhece o resultado da função. Na segunda instância o valor também é diferente de zero, portanto a função chama a si mesma novamente, agora passando como parâmetro zero (valor – 1). 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 Veja que o retorno fica como 1 + ?, pois também não se conhece, ainda, o resultado da função. Na terceira instância, o critério de parada é satisfeito, nesse caso a função retorna zero. Esse valor será usado pela instância anterior que, após somar 1 + 0, retornará seu resultado para a instância 1, que somará 2 + 1 e retornará o valor para a função principal, fechando o ciclo de recursividade. Exemplo função somar(). 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 Uma das grandes dúvidas dos programadores é quando utilizar a recursividade em vez de uma estrutura de repetição. A função somar(), criada no código - Função recursiva para soma -, poderia ser substituída por uma estrutura de repetição usando for? No exemplo dado, poderia ser escrito algo como: Exemplo de substituição de estrutura de repetição. Fonte: elaborado pelo autor. A verdade é que poderia, sim, ser substituída. A técnica de recursividade pode substituir o uso de estruturas de repetição, tornando o código mais elegante do ponto 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 de vista das boas práticas de programação. Entretanto, como você viu, funções recursivas podem consumir mais memória que as estruturas iterativas. Para ajudar a elucidar quando optar por essa técnica, veja o que diz um professor da Universidade de São Paulo (USP): Muitos problemas têm a seguinte propriedade: cada instância do problema contém uma instância menor do mesmo problema. Dizemos que esses problemas têm estrutura recursiva. Para resolver um tal problema, podemos aplicar o seguinte método: se a instância em questão for pequena, resolva-a diretamente (use força bruta se necessário); senão reduza-a a uma instância menor do mesmo problema, aplique o método à instância menor, volte à instância original. [...] A aplicação desse método produz um algoritmo recursivo. (FEOFILOFF, 2017, p. 1, grifo do original) 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 Portanto, a recursividade usada para indicar quando um problema maior pode ser dividido em instâncias menores do mesmo problema, porém considerando a utilização dos recursos computacionais que cada método empregará. Não poderíamos falar de funções recursivas sem apresentar o exemplo do cálculo do fatorial, um clássico no estudo dessa técnica. O fatorial de um número qualquer N consiste em multiplicações sucessivas até que N seja igual ao valor unitário, ou seja, que resulta em 120. Observe o código – Função recursiva para fatorial –, que implementa essa solução usando uma função recursiva. Em seguida, observe a explicação. 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 Função recursiva para fatorial - Fonte: elaborada pelos autores. Teste o código - Função recursiva para fatorial, utilizando a ferramenta Paiza.io. 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 https://paiza.io/projects/-fgDrdXCrWQRPzZQbKn0Yw A execução do código - Função recursiva para fatorial -, inicia pela função principal, a qual solicita um número ao usuário e, na linha 15, invoca a função fatorial(), passando o valor digitado como parâmetro. Dentro da função fatorial(), enquanto o valor for diferente de 1, a função chamará a si própria, criando instâncias na memória, passando a cada vez como parâmetro o valor decrementado de 1. Quando o valor chegar a 1, a função retorna o próprio valor, permitindo assim o retorno da multiplicação dos valores encontrados em cada instância. É importante 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 entender bem o funcionamento. Observe a figura – Exemplo de função fatorial() –, que ilustra asinstâncias quando o usuário digita o número 3. Veja que os resultados só são obtidos quando a função chega no caso base e, então, começa a “devolver” o resultado para a instância anterior. Exemplo de função fatorial(). 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 Conteúdo anterior Próximo conteúdo 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
Compartilhar