aula 06: laboratório - recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/pe-aula06.pdf ·...

24
1 Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada Prof. Jesús P. Mena-Chalco [email protected] 3Q-20107

Upload: others

Post on 19-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

1

Aula 06: Laboratório - Recursão (parte 2)

MCTA028 – Programação Estruturada

Prof. Jesús P. Mena-Chalco

[email protected]

3Q-20107

Page 2: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada
Page 3: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

3

(1) Fatorial de um número inteiro

Page 4: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

4

Fatorial de um número

Teste para num=20 a resposta deve ser 2432902008176640000

Page 5: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

5(*) Fonte: http://www.studytonight.com/c/datatype-in-c.php

Page 6: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

6

Fatorial de um número

Número de vezes em que a função Fatorial é chamada?

Page 7: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

7

Fatorial de um número

Número de vezes em que a função Fatorial é chamada? n+1

Page 8: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

8

Fatorial de um número

$ gcc fatorial.c ­o fatorial.exe

$ ./fatorial.exe 17355687428096000

$ ./fatorial.exe 186402373705728000

$ ./fatorial.exe 19121645100408832000

$ ./fatorial.exe 202432902008176640000

Page 9: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

9

Fatorial de um número

$ gcc ­Wall ­pg fatorial.c ­o fatorial.exe

$ ./fatorial.exe

$ gprof fatorial.exe  > fatorial.txt

Wall ← Warnings allpg ← para uso com o gprof (gera um arquivo gmoun.out)

Um arquivo fatorial.txt é gerado.

n=20

Page 10: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

10

Fatorial de um número

Page 11: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

11

(2) Números de Fibonacci

Page 12: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

12

Page 13: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

13

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)

Page 14: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

14

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)

Page 15: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

15

Números de Fibonacci

$ gcc ­Wall ­pg fibonacci.c ­o fibonacci.exe

$ ./fibonacci.exe

$ gprof fibonacci.exe > fibonacci.txt

n=5

n=20

Page 16: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

16

Números de Fibonacci

Page 17: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

17

Usando uma variável global para contar o número de chamados à função

fibonacciContador.c

Page 18: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

18

Versão com memória

FibonacciComMemoria.c

0 0 1 2 3 5 8 ...

0 0 0 0 0 0 0 ...

Page 19: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

19

(3) Palindromo

Page 20: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

20

Vetor palindromo (Iterativo)

Crie sua versão recursiva

Page 21: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

21

Vetor palindromo (Recursivo)

Page 22: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

22

(4) Primorial

Page 23: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

23

Primorial

O primorial de um número inteiro positivo n é o produto de todos os primos menores ou iguais a n.

É denotado por n#

Crie uma função recursiva que, dado um número inteiro positivo, devolva o seu Primorial.

https://en.wikipedia.org/wiki/Primorial

Page 24: Aula 06: Laboratório - Recursão (parte 2)professor.ufabc.edu.br/.../pe-3q-2017/PE-aula06.pdf · Aula 06: Laboratório - Recursão (parte 2) MCTA028 – Programação Estruturada

24

ehPrimo