Você está na página 1de 36

Curso de C

Recurso

20/05/2009 17:00

Copyright@Arnaldo V Moura, Daniel F Ferber

Curso C - IC/UNICAMP

Recurso
Roteiro:
Idia do procedimento recursivo
Exemplos

20/05/2009 17:00

>

Recurso

Idia

20/05/2009 17:00

Curso C - IC/UNICAMP

Recurso
Calcular a funo fatorial
fat(n) = n x (n-1) x (n-2) x ... x 2 x 1

20/05/2009 17:00

>

Curso C - IC/UNICAMP

Recurso
Calcular a funo fatorial
fat(n) = n x (n-1) x (n-2) x ... x 2 x 1
fat(1) = 1

20/05/2009 17:00

>

Curso C - IC/UNICAMP

Recurso
Calcular a funo fatorial
fat(n) = n x (n-1) x (n-2) x ... x 2 x 1
fat(1) = 1
fat(2) = 2 x 1 = 2

20/05/2009 17:00

>

Curso C - IC/UNICAMP

Recurso
Calcular a funo fatorial
fat(n) = n x (n-1) x (n-2) x ... x 2 x 1
fat(1) = 1
fat(2) = 2 x 1 = 2
fat(3) = 3 x 2 x 1 = 6
20/05/2009 17:00

>

Curso C - IC/UNICAMP

Recurso
Calcular a funo fatorial
fat(n) = n x (n-1) x (n-2) x ... x 2 x 1
fat(1) = 1
fat(2) = 2 x 1 = 2
fat(3) = 3 x 2 x 1 = 6
fat(4) = 4 x 3 x 2 x 1 = 24
20/05/2009 17:00

>

Curso C - IC/UNICAMP

Recurso
Mtodo:
dado um problema P, parametrizado por
um valor n.

20/05/2009 17:00

>

Curso C - IC/UNICAMP

Recurso
Mtodo:
dado um problema P, parametrizado por
um valor n.
No exemplo:
P calcular a funo fatorial, fat
n o parmetro da funo
20/05/2009 17:00

10

>

Curso C - IC/UNICAMP

Recurso
Casos base:
Para alguns valores de n, sabemos
diretamente o valor de P(n):
Usualmente so os primeiros (mais baixos)
valores de n.

20/05/2009 17:00

11

>

Curso C - IC/UNICAMP

Recurso
Casos base:
Para alguns valores de n, sabemos
diretamente o valor de P(n):
Usualmente so os primeiros (mais baixos)
valores de n.

No exemplo:
fat(1) = 1, diretamente.

20/05/2009 17:00

12

>

Curso C - IC/UNICAMP

Recurso
Passo indutivo:
Para um valor de n, diferente do caso
base, assumimos que j temos prontos
os valores de P(n-1), P(n-2), .....
Usamos esses valores para calcular P(n).

20/05/2009 17:00

13

>

Curso C - IC/UNICAMP

Recurso
Passo indutivo:
Para um valor de n, diferente do caso
base, assumimos que j temos prontos
os valores de P(n-1), P(n-2), .....
Usamos esses valores para calcular P(n).
No exemplo:
fat(n) = n x (n-1) x ... x 2 x1 = n x fat(n-1)

20/05/2009 17:00

14

>

Curso C - IC/UNICAMP

Recurso
Podemos calcular P(n) para qualquer n:
fat(4) = 4 x fat(3)

20/05/2009 17:00

15

Curso C - IC/UNICAMP

Recurso
Podemos calcular P(n) para qualquer n:
fat(4) = 4 x fat(3)

fat(3) = 3 x fat(2)

20/05/2009 17:00

Fat

16

>

Curso C - IC/UNICAMP

Recurso
Podemos calcular P(n) para qualquer n:
fat(4) = 4 x fat(3)

fat(3) = 3 x fat(2)

fat(2) = 2 x fat(1)

20/05/2009 17:00

17

>

Curso C - IC/UNICAMP

Recurso
Podemos calcular P(n) para qualquer n:
fat(4) = 4 x fat(3)

fat(3) = 3 x fat(2)

fat(2) = 2 x fat(1)

fat(1) = 1
20/05/2009 17:00

18

Curso C - IC/UNICAMP

Recurso
Podemos calcular P(n) para qualquer n:
fat(4) = 4 x fat(3)

fat(3) = 3 x fat(2)

fat(2) = 2 x fat(1)

fat(1) = 1
20/05/2009 17:00

base

1
Fat

19

>

Curso C - IC/UNICAMP

Recurso
Podemos calcular P(n) para qualquer n:
fat(4) = 4 x fat(3)

fat(3) = 3 x fat(2)

fat(2) = 2 x fat(1)
induo

fat(1) = 1
20/05/2009 17:00

base

2x1=2
1
Fat

20

>

Curso C - IC/UNICAMP

Recurso
Podemos calcular P(n) para qualquer n:
fat(4) = 4 x fat(3)

fat(3) = 3 x fat(2)
induo

fat(2) = 2 x fat(1)

3x2=6
2x1=2

induo

fat(1) = 1
20/05/2009 17:00

base

1
Fat

21

>

Curso C - IC/UNICAMP

Recurso
Podemos calcular P(n) para qualquer n:
fat(4) = 4 x fat(3)
induo

fat(3) = 3 x fat(2)
induo

fat(2) = 2 x fat(1)

4 x 6 = 24
3x2=6
2x1=2

induo

fat(1) = 1
20/05/2009 17:00

base

1
Fat

22

>

Curso C - IC/UNICAMP

Recurso
Recurso deve tratar todos os casos de
valores do parmetro n:

base

20/05/2009 17:00

23

>

Curso C - IC/UNICAMP

Recurso
Recurso deve tratar todos os casos de
valores do parmetro n:

base passo indutivo

20/05/2009 17:00

24

>

Curso C - IC/UNICAMP

Recurso
Recurso deve tratar todos os casos de
valores do parmetro n:

....
base passo indutivo

20/05/2009 17:00

25

>

Curso C - IC/UNICAMP

Recurso
Calcular pot(n) = 2^n, recursivamente, para n >= 0:

20/05/2009 17:00

Potencia

26

>

Curso C - IC/UNICAMP

Recurso
Calcular pot(n) = 2^n, recursivamente, para n >= 0:

Caso base:

20/05/2009 17:00

Potencia

27

>

Curso C - IC/UNICAMP

Recurso
Calcular pot(n) = 2^n, recursivamente, para n >= 0:

Caso base:
n = 0,

20/05/2009 17:00

Potencia

28

>

Curso C - IC/UNICAMP

Recurso
Calcular pot(n) = 2^n, recursivamente, para n >= 0:

Caso base:
n = 0, e 2^0 = 1.

20/05/2009 17:00

Potencia

29

>

Curso C - IC/UNICAMP

Recurso
Calcular pot(n) = 2^n, recursivamente, para n >= 0:

Caso base:
n = 0, e 2^0 = 1.

Passo indutivo:

20/05/2009 17:00

Potencia

30

>

Curso C - IC/UNICAMP

Recurso
Calcular pot(n) = 2^n, recursivamente, para n >= 0:

Caso base:
n = 0, e 2^0 = 1.

Passo indutivo:
n > 0,

20/05/2009 17:00

Potencia

31

>

Curso C - IC/UNICAMP

Recurso
Calcular pot(n) = 2^n, recursivamente, para n >= 0:

Caso base:
n = 0, e 2^0 = 1.

Passo indutivo:
n > 0, e j sei calcular 2^(n-1), 2^(n-2), etc.

20/05/2009 17:00

Potencia

32

>

Curso C - IC/UNICAMP

Recurso
Calcular pot(n) = 2^n, recursivamente, para n >= 0:

Caso base:
n = 0, e 2^0 = 1.

Passo indutivo:
n > 0, e j sei calcular 2^(n-1), 2^(n-2), etc.
Para calcular 2^n:

20/05/2009 17:00

Potencia

33

>

Curso C - IC/UNICAMP

Recurso
Calcular pot(n) = 2^n, recursivamente, para n >= 0:

Caso base:
n = 0, e 2^0 = 1.

Passo indutivo:
n > 0, e j sei calcular 2^(n-1), 2^(n-2), etc.
Para calcular 2^n:
calculamos z = 2^(n-1), recursivamente

20/05/2009 17:00

Potencia

34

>

Curso C - IC/UNICAMP

Recurso
Calcular pot(n) = 2^n, recursivamente, para n >= 0:

Caso base:
n = 0, e 2^0 = 1.

Passo indutivo:
n > 0, e j sei calcular 2^(n-1), 2^(n-2), etc.
Para calcular 2^n:
calculamos z = 2^(n-1), recursivamente
calculamos 2^n = 2*z.
20/05/2009 17:00

Potencia

35

>

Curso de C
PotBaseGen
Hex2dec
MDC
Hanoi
Newton
Fibo
Fibo2

20/05/2009 17:00

Merge
Quick
BuscaBin
Transposta
FormulaInfixa
Rainhas

36

Você também pode gostar