A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Recursividade Programação II.

Apresentações semelhantes


Apresentação em tema: "Recursividade Programação II."— Transcrição da apresentação:

1 Recursividade Programação II

2 Recursividade

3 Recursividade O objeto é definido a partir dele mesmo
Uma computação pode ser definida a partir dela mesma Uma função pode ser definida a partir dela mesma. Recursividade pode repetir uma mesma computação sobre um conjunto de dados menor

4 O objeto é definido a partir dele mesmo
Exemplo - Números Naturais: 0 está em N; Se n está em N, então n + 1 está em N.

5 Uma computação pode ser definida a partir dela mesma
Seqüência de Fibonacci: F(1) = F(0) = 1 F(n) = F(n − 1) + F(n − 2).

6 Uma função pode ser definida a partir dela mesma
função fatorial(n){ se (n <= 1) retorne 1; senão retorne n * fatorial(n-1); }

7 Recursividade pode repetir uma mesma computação sobre um conjunto de dados menor
A função chama a si mesma recursivamente em uma versão menor da entrada (n - 1): funcao procura(x, v, n) { se (v[n] == x) retorne n senao retorne procura (x,v,n-1) }

8 Recursividade Toda função recursiva pode ser construída de maneira não recursiva; Não melhora o desempenha de programas Uma ativação de uma função tem custo computacional mais alto que uma interação de um laço equivalente (por exemplo). Ocupa mais espaço que soluções não recursivas Quando uma função chama a si mesmo, cada ativação recebe um conjunto novo de todos os dados locais, incluindo os parâmetros, independente do conjunto anterior. Geralmente as soluções recursivas são algoritmos menores, mais elegantes e mais fáceis de entender;

9 Mais exemplos Número de Fibonacci de ordem n int fibRec(int n)
{if (n == 0) return 0; if (n == 1) return 1; return fibRec(n - 1) + fibRec(n - 2); }

10 Imprimir um número como uma cadeia de caracteres
imprdecRecursivo(n) int n; { int i; printf("%d\n",n); if (n<0) { putchar('-'); n = -n; } if ((i=n/10)!=0) { imprdecRecursivo(i); putchar(n%10 + '0');

11 Exercícios Construa uma versão não recursiva para as funções fibRec e imprdecRecursivo. Adapte a idéia da função imprdecRecursivo para escrever uma versão recursiva da função itoa(n), que converte um inteiro para uma cadeia de caracteres. Escreva uma versão recursiva da função inverte(s), que inverte a cadeia de caracteres s.


Carregar ppt "Recursividade Programação II."

Apresentações semelhantes


Anúncios Google