56
# Estrutura de Dados # Aula 08 Recursão (conceito, utilização, exemplos) Prof. Leinylson Fontinele Pereira

Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Embed Size (px)

Citation preview

Page 1: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

# Estrutura de Dados #Aula 08 – Recursão

(conceito, utilização, exemplos)Prof. Leinylson Fontinele Pereira

Page 2: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Na aula anterior...

Alocação Dinâmica de Memória

13:08 Aula 08 – Recursão (conceito, utilização, exemplos)

Page 3: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Introdução

13:08 3 Aula 08 – Recursão (conceito, utilização, exemplos)

Page 4: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

O que vamos aprender?

Recursividade

# Conceito

# Utilização

13:08 Aula 08 – Recursão (conceito, utilização, exemplos)

Page 5: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Vamos começar?

13:08 5 Aula 08 – Recursão (conceito, utilização, exemplos)

Page 6: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

13:08

Recursividade

Aula 08 – Recursão (conceito, utilização, exemplos)

Page 7: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

13:08

O método de recursividade deve ser utilizado paraavaliar uma expressão aritmética na qual umprocedimento pode chamar a si mesmo, ou seja, arecursividade consiste em um método que, para quepossa ser aplicado a uma estrutura, aplica a si mesmopara as subestruturas componentes

Aula 08 – Recursão (conceito, utilização, exemplos)

Definição de Recursividade

Page 8: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Exemplos de Recursividade

Page 9: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Exemplos de Recursividade

Page 10: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Exemplo de Recursão

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 11: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Frases Célebres

13:08

“To understand recursion, we must first understand recursion”

“Ao tentar resolver o problema, encontrei obstáculos dentro de obstáculos. Por isso, adotei uma solução recursiva”

Aula 08 – Recursão (conceito, utilização, exemplos)

Page 12: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Recursividade

13:08

O poder da recursão deve-se à possibilidade de definição de umconjunto infinito de objetos por meio de uma formulação finita.

Muitos problemas computacionais 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.

Aula 08 – Recursão (conceito, utilização, exemplos)

Page 13: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Algoritmo Recursivo

13:08

Para resolver um tal problema é natural aplicar o seguinte método:

Aula 08 – Recursão (conceito, utilização, exemplos)

Page 14: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Torre de Hanoi

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 15: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Torre de Hanói: Duas discos

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 16: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Torre de Hanói: Três discos

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 17: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Torre de Hanoi

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 18: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Torre de Hanoi

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 19: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Fatorial de um número

13:08

Considere a função fatorial: fatorial = n!

Para um número inteiro não-negativo arbitrário

Aula 08 – Recursão (conceito, utilização, exemplos)

Page 20: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Fatorial de um número

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 21: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Iterativo de números

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Dados dois número inteiros, 𝑛 e 𝑘, crie uma função iterativa para calcular aseguinte somatória:

Page 22: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo de números

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Dados dois número inteiros, 𝑛 e 𝑘, crie uma função recursiva para calcular aseguinte somatória:

Page 23: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo de números

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Para 𝑛 = 4 𝑒 𝑘 = 99

Page 24: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Para 𝑛 = 4 𝑒 𝑘 = 99

Page 25: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Para 𝑛 = 3 𝑒 𝑘 = 99

Page 26: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Para 𝑛 = 2 𝑒 𝑘 = 99

Page 27: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Para 𝑛 = 1 𝑒 𝑘 = 99

Page 28: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Para 𝑛 = 0 𝑒 𝑘 = 99

Page 29: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Para 𝑛 = 4 𝑒 𝑘 = 99

Page 30: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Retorno do processamento

Page 31: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Retorno do processamento

Page 32: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Retorno do processamento

Page 33: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Retorno do processamento

Page 34: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Somatório Recursivo

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 35: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

13:08 35

Perceberam a diferença?

Aula 08 – Recursão (conceito, utilização, exemplos)

Page 36: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Recursivo vs Iterativo

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 37: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Função recursiva

13:08

Uma função recursiva é definida em seus próprios termos

Toda função pode ser escrita como função recursiva sem o uso deinteração (laços)

Reciprocamente, qualquer função recursiva pode ser descritaatravés de interações sucessivas

Ingredientes: Definição de casos bases (que não envolvem recursão)

Passos recursivos, com decremento na entrada, no sentido do caso base.Aula 08 – Recursão (conceito, utilização, exemplos)

Page 38: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Números de Fibonacci

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Os números de Fibonacci foram propostos por Leonardo di Pisa (Fibonacci), em1202, como uma solução para o problema de determinar o tamanho dapopulação de coelhos

Page 39: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Sequência de Fibonacci e a Natureza

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 40: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Sequência de Fibonacci e a Natureza

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 41: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Números de Fibonacci

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 42: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Números de Fibonacci

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 43: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Números de Fibonacci

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 44: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Números de Fibonacci

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 45: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Números de Fibonacci

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

𝐹𝑖𝑏 100 ?

Page 46: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Números de Fibonacci

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 47: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

13:08 47

Quantos dígitos binários são necessários para representar

um numero decimal?

Aula 08 – Recursão (conceito, utilização, exemplos)

Page 48: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Número de dígitos binários

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Crie uma função que calcula o número mínimo de dígitos binários pararepresentar um número inteiro decimal positivo𝑛

Page 49: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Número de dígitos binários

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Page 50: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Vantagens e Desvantagens

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Vantagens

Redução do tamanho do código fonte

Permite descrever algoritmos de forma mais clara e concisa

Desvantagens

Redução do desempenho de execução devido ao tempo para gerenciamento dechamadas

Dificuldades na depuração de programas recursivos, especialmente se a recursãofor muito profunda

Page 51: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Concluindo...

13:08 52 Aula 08 – Recursão (conceito, utilização, exemplos)

Page 52: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Atividade!

13:08 53 Aula 08 – Recursão (conceito, utilização, exemplos)

Page 53: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Parece mágica, mas é programação...

13:08Aula 08 – Recursão (conceito, utilização, exemplos)

Qual é o resultado da execução das seguintes funções para𝑛 = 5?

Page 54: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Nesta aula aprendemos...

Recursividade

# Conceito

# Utilização

13:08 Aula 08 – Recursão (conceito, utilização, exemplos)

Page 55: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Material: https://sites.google.com/site/leinylsonuespi

13:08

Material baseado nas aulas de:

Recursão/Recursividade, Prof. Jesús P. Mena-Chalco

Aula 08 – Recursão (conceito, utilização, exemplos)

Page 56: Estrutura de Dados - Aula 08 - Recursão (conceito, utilização, exemplos)

Alguma Dúvida?

13:08

Até a próxima aula...

[email protected]