#include <stdio.h>
#include <stdlib.h>
unsigned long fibonacciRec(int n)
{
static unsigned long chamadas = 0;
if(n == -1)
return chamadas = 0;
if(n == -2)
return chamadas;
chamadas++;
if(n < 2)
return 1UL;
return fibonacciRec(n-1) + fibonacciRec(n-2);
}
unsigned long fibonacci(int n)
{
int i;
unsigned long fn1, fn2, fn;
fn = fn1 = fn2 = 1UL;
for(i = 2; i <= n; i++)
{
fn = fn1 + fn2;
fn2 = fn1;
fn1 = fn;
}
return fn;
}
int main(int argc, char *argv[])
{
int n, res;
printf("Numero de chamadas da funcao Fibonacci recursiva.\n"
"Qual o valor n? ");
while((res = scanf("%d", &n)) != 1 && res != EOF)
/* Nada */;
if(res == EOF)
return EXIT_FAILURE;
fibonacciRec(-1);
printf("F(%d) = %lu\n", n, fibonacciRec(n));
printf("chamadas = %lu\n", fibonacciRec(-2));
return EXIT_SUCCESS;
}