recurs o n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Recursão PowerPoint Presentation
Download Presentation
Recursão

Loading in 2 Seconds...

play fullscreen
1 / 14

Recursão - PowerPoint PPT Presentation


  • 131 Views
  • Uploaded on

Recursão. Computer Science – A Structured Programming Approach Using C Behrouz A. Forouzna & Richard F. Gilberg Heinle Cengage - 3ª. Edição. Definição de recursão. Recursão é um processo repetitivo no qual uma função chama ela mesma. Exemplo: definição de fatorial recursivo

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Recursão' - errin


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
recurs o

Recursão

Computer Science – A Structured Programming Approach Using C

Behrouz A. Forouzna & Richard F. Gilberg

Heinle Cengage - 3ª. Edição

defini o de recurs o
Definição de recursão
  • Recursão é um processo repetitivo no qual uma função chama ela mesma.

Exemplo: definição de fatorial recursivo

Note que a solução recursiva para um problema envolve um caminho de dois sentidos: primeiro o problema é decomposto no sentido top/down e depois resolvido no sentido bottom/up.

decomposi o do fatorial 3
Decomposição do Fatorial(3)

Fatorial(3) = 3 * 2 = 6

Fatorial(3) = 3 * Fatorial(2)

Fatorial(2) = 2 * Fatorial(1)

Fatorial(2) = 2 * 1 = 2

Fatorial(1) = 1*Fatorial(0)

Fatorial(1) = 1*1 = 1

Fatorial(0)=1

solu o iterativa
Solução Iterativa

/* soluçao iterativa para o calculo do fatorial */

long Fatorial(int n)

{

// declarações locais

long factN = 1;

int i;

for (i = 1; i <= n; i++)

factN = factN * i;

return factN;

} //fim fatorial

solu o recursiva
Solução recursiva

/* soluçao recursiva para o calculo do fatorial */

long Fatorial(int n)

{

// declarações locais

if (n == 0)

return 1;

else

return (n*Fatorial(n-1));

} //fim fatorial

projeto para implementar fun es recursivas
Projeto para implementar funções recursivas

Toda função recursiva possui dois elementos:

  • Resolver parte do problema (caso base) ou
  • Reduzir o tamanho do problema (caso geral).

No caso do nosso exemplo, Fatorial(0) é o caso base

regras para projetar uma fun o recursiva
Regras para projetar uma função recursiva
  • Determinar o caso base;
  • Determinar o caso geral;
  • Combinar o caso base e o caso geral na função.

Atenção: Cada chamada da função deve reduzir o tamanho do problema e movê-lo em direção do caso base. O caso base deve terminar sem chamar a função recursiva; isto é, executar um return.

n meros de fibonacci
Números de Fibonacci

Números de Fibonacci são uma série na qual cada número é a soma dos dois números anteriores:

0, 1, 1, 2, 3, 5, .....

Para iniciar a série é preciso conhecer os dois primeiros números.

generaliza o da s rie de fibonacci
Generalização da série de Fibonacci

Dados (caso base):

Fibonacci0 = 0;

Fibonacci1 = 1;

Então (caso geral):

Fibonaccin = Fibonaccin-1 + Fibonaccin-2

generaliza o de fibonacci 4

1

1

Generalização de Fibonacci4

Fib4

Fib3 + Fib2

Fib2 + Fib1 Fib1 + Fib0

Fib1 + Fib0

0

1

0

exerc cio

Long fib(int n)

{

if (n == 0 || n == 1) // caso base

return n;

return (fib(n-1) + fib(n-2)); // caso geral

}

Exercício

1) Escreva uma função que determine a serie de Fibbonacci com n termos.

limita es da recurs o
Limitações da recursão
  • Soluções recursivas podem envolver alto overhead devido à chamada de funções;
  • A cada chamada da função recursiva, espaço de memória ( na pilha) é alocada. Se o número de chamada recursiva é muito grande, pode não ter espaço suficiente na pilha para executar o programa (segment fault)
limita es da recurs o1
Limitações da recursão
  • As funções para determinar o fatorial e a serie de Fibonacci são melhores implementadas por funções iterativas;

Isto significa que soluçoes iterativas são sempre melhores que as recursivas????

NÃO: ALGUNS ALGORITMOS SÃO MAIS FACEIS DE IMPLEMENTAR USANDO RECURSÃO E SÃO MAIS EFICIENTES

exerc cios
Exercícios
  • Escreva um programa que, dado o valor n, imprima os primeiros n termos da serie de Fibonacci usando a função recursiva long fib(int n).
  • Reescreva a função long fib(int n), na forma iterativa.
  • Avalie o tempo de resposta dos programas.