
Go backward to E também iterativo
Go up to Alguns exercícios a exemplos dados nas aulas teóricas
Go forward to Mais recursividade
Mais Fibonacci
// -----------------------------------------------------------------------------
// Recursividade III
// Fibonacci: marcação das entradas nas funções
/* Objectivo: escrever uma versão da função recursiva
main(){
int n;
int fib(int);
do{
printf("Numero (negativo para acabar? ");
scanf("%d",&n);
if(n<0)
break;
printf("fib(%-d) = %-d\n",n,fib(n));
}
while(1);
}
#define SM 2
int fib(int n){
int t1,t2;
static int sp=0;
void space(int);
space(sp);
printf("fib(%-d)\n",n);
sp+=SM;
if(n==0){
sp-=SM;
return(0);
}
if(n==1){
sp-=SM;
return(1);
}
t1=fib(n-1);
t2=fib(n-2);
sp-=SM;
return(t1+t2);
}
void space(int n){
int i;
for(i=0;i<n;i++)
printf(" ");
}
/* Resultados:
Numero (negativo para acabar? 5
fib(5)
fib(4)
fib(3)
fib(2)
fib(1)
fib(0)
fib(1)
fib(2)
fib(1)
fib(0)
fib(3)
fib(2)
fib(1)
fib(0)
fib(1)
fib(5) = 5
