0,1, ..., n-1 - LAC

Propaganda
Recursividade
Divisão de problema em subproblemas
Algoritmo utilizando esta técnica onde as soluções
destes subproblemas requerem a chamada ao
próprio algoritmo
Exemplo: Fatorial
0! = 1 ( por definição )
n! = n * (n-1)!
Recursividade
4!
Fatorial ( 4 )
4 * Fatorial ( 3 )
4 * 3 * Fatorial ( 2 )
4 * 3 * 2 * Fatorial ( 1 )
4 * 3 * 2 * 1 * Fatorial ( 0 )
4 * 3 * 2 * 1 * 1 = 24
Recursividade
int fatorial ( n )
{
if ( n > 1 ) return n * fatorial ( n - 1 )
return 1
}
Recursividade
Outros Exemplos
•T ( n ) = 2T ( n - 1 ) + 1
•Fib ( n ) = Fib ( n - 1 ) + Fib ( n - 2 )
dado Fib ( 1 ) = Fib ( 2 ) = 1
int fib ( int n )
{
if ( n == 1 || n == 2 ) return 1
return fib ( n - 1 ) + fib ( n - 2 )
}
Recursividade
Quantas vezes a função fib é chamada?
n
1
2
3
4
5
6
7
8
20
fib
1
2
5
10
19
34
59
100
35400
Download