// Fibonacci recursivo que cuenta sus llamadas. El contador llega por puntero: no hay globales.
#include <stdio.h>

long long fib(int n, long long *calls) {
    (*calls)++;
    if (n < 2) {
        return n;
    }
    return fib(n - 1, calls) + fib(n - 2, calls);
}

int main(void) {
    const int sizes[] = {1, 2, 3, 4, 5, 10, 20, 30, 35, 36, 37, 40};
    int count = (int) (sizeof(sizes) / sizeof(sizes[0]));

    printf("%4s %12s %12s\n", "n", "fib(n)", "llamadas");
    for (int i = 0; i < count; i++) {
        long long calls = 0;
        long long value = fib(sizes[i], &calls);
        printf("%4d %12lld %12lld\n", sizes[i], value, calls);
    }
    return 0;
}
