Sie sind auf Seite 1von 11

Estruturas de Dados

Profa. Juliana Pinheiro Campos

ESTRUTURAS DE DADOS

Recursividade
Funes podem ser chamadas recursivamente:
Dentro do corpo de uma funo podemos chamar
novamente a prpria funo direta ou indiretamente.
O uso da recursividade geralmente permite uma
descrio mais clara e concisa dos algoritmos,
especialmente quando o problema a ser resolvido
recursivo por natureza.
Diversas implementaes ficam mais fceis com a
recursividade. Mas implementaes no recursivas
tendem a ser mais eficientes.

ESTRUTURAS DE DADOS

Recursividade
Cria-se um ambiente local para cada chamada
recursiva. As variveis locais de chamadas
recursivas so independentes entre si.
As implementaes recursivas devem ser
pensadas conforme a definio recursiva do
problema.

ESTRUTURAS DE DADOS

Recursividade
Exemplo: Clculo do fatorial de um nmero n
1, se n = 0

1, se n = 0

n!
n x (n - 1)!, se n > 0

ESTRUTURAS DE DADOS

Recursividade
Exemplo: Clculo do fatorial de um nmero n
int fat(int n){
if(n == 0)
return 1;
else
return n * fat(n 1);
}

ESTRUTURAS DE DADOS

Recursividade
Uma exigncia fundamental que a chamada
recursiva de um procedimento P esteja sujeita a
uma condio B (condio de parada ou
terminao), a qual se torna no satisfeita em
algum momento da computao.
Todo procedimento recursivo deve ter uma
condio de parada, caso contrrio entraria em
loop infinito.

ESTRUTURAS DE DADOS

Recursividade
Exerccio: 7) A srie de Fibonacci definida como:
0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233... onde, os
dois primeiros elementos so pr-definidos e do terceiro
em diante so gerados partir da soma dos dois
imediatamente anteriores.
Implemente um programa para calcular o valor do
elemento da posicao n na srie de Fibonacci.
No programa, implemente uma funo recursiva e
uma funo no recursiva que recebe como parmetro a
posio n do elemento que se deseja gerar. A primeira
posio considerada 0.

ESTRUTURAS DE DADOS

Pr-processador e macros
Antes de ser compilado, o cdigo C passa por um
pr-processador que reconhece determinadas
diretivas:
#include: seguida por um nome de arquivo. O prprocessador a substitui pelo corpo do arquivo
especificado. O nome do arquivo includo envolto
por aspas ou <>.
#define: seguida pela definio de uma constante.
Toda ocorrncia da constante substituda.

ESTRUTURAS DE DADOS

Pr-processador e macros
Exemplo #define:
#define PI 3.14159
float area (float r) {
float a = PI * r * r;
return a;

Substitui toda ocorrncia


de PI pelo valor definido!

}
Qual a vantagem de se utilizar a diretiva #define???

ESTRUTURAS DE DADOS

Pr-processador e macros
C permite ainda a utilizao da diretiva de
definio com parmetros:
#define MAX(a,b) ((a) > (b) ? (a) : (b))
Essas definies com parmetros recebem o
nome de macros.

ESTRUTURAS DE DADOS

Pr-processador e macros
Cuidado ao utilizar macros:
Erros de sintaxe podem aparecer na linha em que se
utiliza a macro.
Para evitar efeitos colaterais envolva cada parmetro
da macro com parnteses.
Ex: #define PROD(a,b) (a*b)
int main(){

printf(%d, PROD(3 + 4, 2))


...
}

Das könnte Ihnen auch gefallen