Você está na página 1de 14

Recursividade

INFORMÁTICA BÁSICA

Prof. Demétrios Coutinho

Campus Pau dos Ferros


Disciplina de Organização de Algoritmos
Demetrios.coutinho@ifrn.edu.br
DEFINIÇÃO DE RECURSÃO

É o nome que se dá quando uma função chama a si


própria.

• Existe a recursão direta – quando uma função chama a si


mesma diretamente.
• E a recursão indireta – quando uma função chama outra, e
esta, por sua vez chama a primeira.

Uma função pode ser implementada de forma iterativa ou


recursiva.

• O código de uma função recursiva é mais simples e clara.


• Implementações iterativas tendem a ser mais eficientes
(performance) que as recursivas.
DEFINIÇÃO DE RECURSÃO

Sempre que há uma chamada de função (recursiva ou não) os


parâmetros e as variáveis locais são empilhadas na pilha de
execução.

No caso da função recursiva, para cada chamada é criado um


ambiente local próprio. (As variáveis locais de chamadas recursivas
são independentes entre si, como se fossem provenientes de
funções diferentes).
DEFINIÇÃO DE RECURSÃO

Uma função pode chamar a si própria por um número limitado de vezes.

Esse limite é dado pelo tamanho da pilha. Se o valor correspondente ao


tamanho máximo da pilha for atingido, haverá um estouro da pilha ou Stack
Overflow.

Cada vez que uma função é chamada de forma recursiva, são alojados e
armazenados uma cópia dos seus parâmetros, de modo a não perder os
valores dos parâmetros das chamadas anteriores.

Ao final da execução,os dados são desempilhados e a execução volta ao


subprograma que chamou a função.
ELEMENTOS DA RECURSIVIDADE

Ponto de Parada ou Condição de Parada: é o ponto onde a função


será encerrada.

Regra Geral: é o método que reduz a resolução do problema através


da invocação recursiva de casos menores, que por sua vez são
resolvidos pela resolução de casos ainda menores pela própria
função, assim sucessivamente até atingir o “ponto de parada” que
finaliza a função.
ELEMENTOS DA RECURSIVIDADE
EXEMPLO FATORIAL

A recursividade é uma estratégia que pode ser utilizada sempre que o cálculo de
uma função para o valor n, pode ser descrita a partir do cálculo desta mesma
função para o termo anterior (n-1).

Fatorial: Condição de Parada

4! = ? Chamada base - Recursiva


4! = 4*3!
4! = 4*3*2!
4! = 4*3*2*1!
4! = 4*3*2*1*0!
4! = 4*3*2*1*1
EXEMPLO FATORIAL
EXEMPLO FATORIAL

Solução Iterativa
EXEMPLO FIBONACCI

Série de Fibonacci:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...
Qual é a lógica?
QUAL O RESULTADO?
PERCORRER UM VETOR RECURSIVAMENTE
EXERCÍCIOS

1. Implemente um algoritmo recursivo do somatório de 0 ate n.


2. Fazer um programa que leia,some 2 valores inteiros e mostre o resultado da soma.
No final do programa, deverá ter uma recursividade que chame novamente o programa
principal, mostre a mensagem “Digite 1 se desejar executar o programa novamente”,
caso positivo, executar o programa novamente caso negativo, terminar a execução do
programa.
3. Implemente a função recursiva procura do slide anterior.
4. Implemente uma função recursiva e outra iterativa de:
a. Fibonacci
b. Fatorial
c. Potencia a^b
d. MDC
5. Implemente uma função recursiva que inverte um vetor de tamanho n.
6. Implemente a solução da torre de Hanoi.
7. Implemente uma função recursiva que faça uma busca binária de um vetor n ordenado.
BONS ESTUDOS :)

Algoritmos
Prof. Demétrios Coutinho

Campus Pau dos Ferros


Disciplina de Algoritmos

Você também pode gostar