aula 05: - recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 aula 05: -...
TRANSCRIPT
![Page 1: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/1.jpg)
1
Aula 05:
- Recursão (parte 1)
MCTA028 – Programação Estruturada
Prof. João Henrique Kleinschmidt
Material elaborado pelo prof. Jesús P. Mena-Chalco
3Q-20108
![Page 2: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/2.jpg)
Recursão:Se você ainda não entendeu;Ver: "Recursão".
![Page 3: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/3.jpg)
![Page 4: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/4.jpg)
4
Anuncio de cacão com uma imagem recursiva.
Efeito Droste
![Page 5: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/5.jpg)
![Page 6: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/6.jpg)
6
Recursão
O conceito de recursão é de fundamental importância em
computação!
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.
(*) Fonte: P. Feofiloff. Algoritmos em Linguagem C. 1ª Edição, Editora Campos, 2008.
![Page 7: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/7.jpg)
7
Recursão
Para resolver um tal problema é natural aplicar o seguinte
método:
Se a instância em questão é 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
e volte à instância original.
A aplicação do método produz um algoritmo recursivo.
(*) Fonte: P. Feofiloff. Algoritmos em Linguagem C. 1ª Edição, Editora Campos, 2008.
![Page 8: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/8.jpg)
A recursão pode ser infinita.Não esqueça de definir o caso base (condição de parada)
Fonte: http://en.wikipedia.org/wiki/Recursion
![Page 10: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/10.jpg)
![Page 11: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/11.jpg)
11
Fatorial de um número
![Page 12: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/12.jpg)
12
Fatorial de um número
Considere a função fatorial (representado por n!)
para um número inteiro, n, não-negativo arbitrário
![Page 13: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/13.jpg)
13
Fatorial de um número
Número de vezes em que a função Fatorial é chamada?
![Page 14: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/14.jpg)
14
Fatorial de um número
Número de vezes em que a função Fatorial é chamada? n+1
![Page 15: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/15.jpg)
15
Fatorial → Primorial
O primorial de um número inteiro positivo n é o produto de todos os
primos menores ou iguais a n.
É denotado por n#
[LAB] Crie uma função recursiva que, dado um número inteiro positivo, devolva:
(a) o seu Primorial.
(b) o número de multiplicações necessárias para calcular seu primorial.
https://en.wikipedia.org/wiki/Primorial
![Page 16: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/16.jpg)
16
Somatório de números
![Page 17: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/17.jpg)
17
Um exemplo de somatória
Dados dois número inteiros, n e k, crie uma função iterativa
para calcular a seguinte somatória:
![Page 18: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/18.jpg)
18
Um exemplo de somatória
$ gcc somatoria.c -lm -o somatoria.exe
$ ./somatoria.exe
4
20
1102999460754
![Page 19: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/19.jpg)
19
Um exemplo de somatória
Dados dois número inteiros, n e k, crie uma função recursiva
para calcular a seguinte somatória:
![Page 20: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/20.jpg)
20
Um exemplo de somatória
Dados dois número inteiros, n e k, crie uma função recursiva
para calcular a seguinte somatória:
![Page 21: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/21.jpg)
n=4, k=99
![Page 22: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/22.jpg)
n=3, k=99
n=4, k=99
4⁹⁹ +
![Page 23: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/23.jpg)
n=3, k=99
n=2, k=993⁹⁹ +
n=4, k=99
4⁹⁹ +
![Page 24: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/24.jpg)
n=3, k=99
n=2, k=993⁹⁹ +
n=1, k=992⁹⁹ +
n=4, k=99
4⁹⁹ +
![Page 25: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/25.jpg)
n=3, k=99
n=2, k=993⁹⁹ +
n=1, k=992⁹⁹ +
n=0, k=991⁹⁹ +
n=4, k=99
4⁹⁹ +
![Page 26: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/26.jpg)
n=3, k=99
n=2, k=993⁹⁹ +
n=1, k=992⁹⁹ +
01⁹⁹ +
n=4, k=99
4⁹⁹ +
![Page 27: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/27.jpg)
n=3, k=99
n=2, k=993⁹⁹ +
1⁹⁹+02⁹⁹ +
01⁹⁹ +
n=4, k=99
4⁹⁹ +
![Page 28: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/28.jpg)
n=3, k=99
2⁹⁹+1⁹⁹+03⁹⁹ +
1⁹⁹+02⁹⁹ +
01⁹⁹ +
n=4, k=99
4⁹⁹ +
![Page 29: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/29.jpg)
3⁹⁹+2⁹⁹+1⁹⁹+0
2⁹⁹+1⁹⁹+03⁹⁹ +
1⁹⁹+02⁹⁹ +
01⁹⁹ +
n=4, k=99
4⁹⁹ +
![Page 30: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/30.jpg)
3⁹⁹+2⁹⁹+1⁹⁹+0
2⁹⁹+1⁹⁹+03⁹⁹ +
1⁹⁹+02⁹⁹ +
01⁹⁹ +
4⁹⁹+3⁹⁹+2⁹⁹+1⁹⁹+0
4⁹⁹ +
![Page 31: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/31.jpg)
3⁹⁹+2⁹⁹+1⁹⁹+0
2⁹⁹+1⁹⁹+03⁹⁹ +
1⁹⁹+02⁹⁹ +
01⁹⁹ +
4⁹⁹+3⁹⁹+2⁹⁹+1⁹⁹+0
4⁹⁹ +
![Page 32: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/32.jpg)
Um laço e um acumulador
Sem laço e sem acumulador?
![Page 33: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/33.jpg)
33
Matrioska
![Page 34: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/34.jpg)
34
Matrioska
![Page 35: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/35.jpg)
35
Função recursiva
Uma função recursiva é definida em seus próprios termos.
Toda função pode ser escrita como função recursiva sem o
uso de interação (laços).
Reciprocamente, qualquer função recursiva pode ser descrita
atravé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.
![Page 36: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/36.jpg)
36
Recursão
Para resolver um tal problema é natural aplicar o seguinte
método:
Se a instância em questão é 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
e volte à instância original.
A aplicação do método produz um algoritmo recursivo.
(*) Fonte: P. Feofiloff. Algoritmos em Linguagem C. 1ª Edição, Editora Campos, 2008.
![Page 37: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/37.jpg)
37
Números de Fibonacci
![Page 38: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/38.jpg)
38
Números de Fibonacci
(*) fonte http://britton.disted.camosun.bc.ca/fibslide/jbfibslide.htm
![Page 39: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/39.jpg)
39
Números de Fibonacci
![Page 40: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/40.jpg)
40
Números de Fibonacci
Função é duplamente recursiva
(efetua mais de uma chamada a Fib
![Page 41: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/41.jpg)
41
Números de Fibonacci
![Page 42: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/42.jpg)
42
Números de Fibonacci
Fib (5)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Pensou na eficiência da abordagem recursiva?
![Page 43: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/43.jpg)
43
Números de Fibonacci
Fib (6)
Fib (5)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (7)Fib (6)
Fib (5)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (5)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (8)Fib (7)
Fib (6)
Fib (5)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (5)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (6)
Fib (5)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (9)Fib (8)
Fib (7)
Fib (6)
Fib (5)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (5)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (6)
Fib (5)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (7)
Fib (6)
Fib (5)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (5)
Fib (4)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)
Fib (2)
Fib (1)
Fib (0)
Fib (3)
Fib (2)
Fib (1)
Fib (0)
Fib (1)Qual o número de vezes que a função Fib é chamada?
![Page 44: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/44.jpg)
44
Números de Fibonacci
(*) fonte http://www.oxfordmathcenter.com/drupal7/node/487
![Page 45: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/45.jpg)
45
Número de dígitos binários
![Page 46: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/46.jpg)
46
Número de dígitos binários
Crie uma função que calcula o número mínimo de dígitos
binários para representar um número inteiro decimal positivo n.
128 é representado com, no mínimo, 8 dígitos binários
![Page 47: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/47.jpg)
47
Número de dígitos binários
![Page 48: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/48.jpg)
48
Número de dígitos binários
Número de vezes em que a função bin é chamada?
![Page 49: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/49.jpg)
49
Número de dígitos binários
Número de vezes em que a função bin é chamada?
![Page 50: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/50.jpg)
Recursividade é uma das coisas mágicas e interessantes em Lógica de Programação
![Page 51: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/51.jpg)
51
Atividade em aula
![Page 52: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/52.jpg)
52
Questão 1
Qual é o resultado da execução das seguintes funções para
n=5?
Resposta de conta1 para n=5
5
4
3
2
1
Resposta de conta2 para n=5
1
2
3
4
5
![Page 53: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/53.jpg)
53
Questão 2
Indique o que devolvem as funções F1 e F2 para valores de: a=2, k=5.
Construa sua representação matemática recursiva.
Descreva em português o que calcula cada função.
Ambas as funções calculam a^k .
Para a=2, e b=5 a função devolve 32.
F2 é mais eficiente!
![Page 54: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/54.jpg)
54
Questão 3
Descreva em português o que calcula a função M.
Qual o número total de comparações?
A função M, dada um vetor v[0,…,n-1] de n
elementos devolve o menor valor contido em v.
Número de comparações = n
![Page 55: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/55.jpg)
55
Questão 4
Escreva uma versão iterativa da função M.
Versão iterativa
![Page 56: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/56.jpg)
56
Recursão
Uma função recursiva é aquela que se chama a si mesma
(obrigatoriamente)?
![Page 57: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/57.jpg)
57
Recursão
Uma função recursiva não necessariamente é aquela que se chama a si mesma
F1(...) → F2(...) → F3(...) → …. → F1(….)
![Page 58: Aula 05: - Recursão (parte 1)professor.ufabc.edu.br/.../prog2018/aula_05_prog2018.pdf1 Aula 05: - Recursão (parte 1) MCTA028 –Programação EstruturadaProf. João Henrique Kleinschmidt](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f216f4ad405fc3a9132674e/html5/thumbnails/58.jpg)
58
Análise de algoritmos recursivos
Para fazer a análise é necessário obter a relação de
recorrência.
A fórmula fechada (resolução) da recorrência pode ser obtida
por diferentes abordagens, por exemplo:
Árvore de recorrência
Método mestre
Funções geradoras