#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; }