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