Baixe o app para aproveitar ainda mais
Prévia do material em texto
CCT0083 - Algoritmo Avançado Aula 04 - Recursividade Introdução à Programação AULA 01: Introdução à Lógica de Programação Algoritmo Avançado Algoritmo Avançado Aula 04 - Recursividade Introdução à Programação AULA 01: Introdução à Lógica de Programação Agenda Algoritmo Avançado Objetivo da aula Introdução Conceitos Regras da Recursividade Tipos de recursividade - Direta ou simples - Indireta ou composta Exemplos. 4 Objetivo da aula O aluno deverá ser capaz de: • Compreender o conceito de Recursividade; • Entender como implementar recursividade; • Entender quando não usar recursividade; 5 Introdução A recursividade nos permite obter a solução de um problema a partir do próprio problema, ou seja, encontrar a solução dentro do próprio problema. 6 Conceito • A recursividade é uma técnica que define um problema em termos de uma ou mais versões menores deste mesmo problema. • Em linhas gerais, a recursividade pode ser considerada como um processo de repetição de uma rotina que pode acontecer direta ou indiretamente. 7 Recursividade • Recursividade é a capacidade de um programa (função ou procedimento) fazer uma ou mais chamadas a si mesmo ou de outros. • Na execução de um programa recursivo, uma pilha é responsável pelo armazenamento das variáveis recursivas. 8 Regras de Recursividade • Uma função recursiva tem que seguir duas regras básicas: – Ter uma condição de parada (para garantir que uma chamada recursiva não criará um loop infinito). – E, tornar o problema mais simples a partir de uma solução elegante. 9 • Genericamente um módulo recursivo segue o algoritmo abaixo: SE <condição de parada satisfeita> Retornar senão Divida o problema num caso mais simples utilizando recursão Recursividade 10 • Recursividade Direta ou simples • Recursividade Indireta ou composta Tipos de Recursividades 11 • Recursividade Direta ou simples uma rotina que é formada por um conjunto de comandos e uma chamada a ela mesma. Tipos de Recursividades 12 • Recursividade Direta ou simples • Exemplo: Tipos de Recursividades A função fatorial chama a si mesma. 13 • Recursão Indireta ou composta uma rotina que contém uma chamada a outra rotina que, por sua vez, tem uma chamada a outra rotina e assim sucessivamente, portanto, rotinas diferentes. Tipos de Recursividades 14 • Recursividade Indireta ou composta • Exemplo: Tipos de Recursividades A função que retorna outra função. 15 • Um programa recursivo é mais elegante. • Exibir mais clareza do código. • Possibilita o programador ganhar mais experiência na programação. • Alto índice de fragmentação do código. Vantagens da Recursividades 16 • Alto consumo de memória. • Possiblidade de ocorrências de lentidão. • Aumenta o número de linhas de código. • Exige mais conhecimento lógico de programação. Desvantagens da Recursividades 17 Próxima aula explicação sobre o trabalho complementar a prova AV1 Introdução à Programação AULA 01: Introdução à Lógica de Programação Bibliografia básica Ascencio, Ana Fernanda Gomes; Araújo, Graziela Santos de. Estruturas de Dados. Algoritmos, Análise da Complexidade e Implementações em Java e C/C++ [BV:PE]. 1. ed. São Paulo: Pearson, 2013. Disponível em: https://plataforma.bvirtual.com.br/Leitor/Publicacao/1995/pdf Drozdek, Adam. Estrutura de dados e algoritmos em C++ [BV:MB].. 4. ed. São Paulo,: Cengage Learning,, 2016.. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788522126651/cfi/0!/4/4@0. 00:0.00 Manzano, Jose´ Augusto N. G. Algoritmos - Lógica para Desenvolvimento de Programação de Computadores [BV:MB].. 28. ed. -. Sa~o Paulo: E´rica,, 2016.. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788536518657/cfi/0!/4/4@0. 00:0.00 Algoritmo Avançado Introdução à Programação AULA 01: Introdução à Lógica de Programação Bibliografia complementar Projeto e Otimização em D ANDRADE, Mairum Ceoldo. Algoritmos [BV:RE]. 1. ed. Rio de Janeiro: SESES, 2014. Disponível em: http://repositorio.savaestacio.com.br/site/index.html#/objeto/detalhes/377757CE-7C5A- 438D-A742-482DDDC54D12 Ascencio, Ana Fernanda Gomes. Estrutura de Dados: Algoritmos, Análise da complexidade e implementações em Java e C/C++[BV:PE]. 1ª ed. São Paulo: Pearson Pentice Hall, 2010. Disponível em: https://plataforma.bvirtual.com.br/Leitor/Publicacao/1995/pdf Damas, Luís. Linguagem C / Luís Damas ; tradução João Araújo Ribeiro, Orlando Bernardo Filho.[BV:MB]. 10.ed. - [Reimpr.].. Rio de Janeiro: LTC,, 2016. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788521632474/cfi/6/2!/4/2/2@0:0 Drozdek, Adam. Estrutura de dados e algoritmos em C++ / Adam Drozdek ; tradução: Roberto Enrique Romero Torrejon; revisão técnica: Flávio Soares Corrêa da Silva. [BV:MB]. 4a ed. São Paulo,: Cengage Learning., 2016. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788522126651/cfi/0!/4/4@0.00:0.00 MELO,Ana. Silva,Flavio. Princípios de linguagem de programação[BV:PE]. 1ª Edição. Rio de Janeiro: Blucher, 2019. Disponível em: https://plataforma.bvirtual.com.br/Leitor/Publicacao/172605/pdf Algoritmo Avançado
Compartilhar