// Error a propósito: da bien el resultado, pero calcula dos veces la mitad.
#include <stdio.h>

static long long power_twice(long long base, int n, long *calls) {
    *calls = *calls + 1;
    if (n == 0) {
        return 1;
    }
    long long result = power_twice(base, n / 2, calls) * power_twice(base, n / 2, calls);
    if (n % 2 == 1) {
        result = result * base;
    }
    return result;
}

int main(void) {
    // Con base 1 el resultado siempre cabe, y el número de llamadas no depende de la base.
    int sizes[] = {10, 100, 1024};
    for (int i = 0; i < 3; i++) {
        long calls = 0;
        long long result = power_twice(1, sizes[i], &calls);
        printf("power_twice(1, %d) = %lld, llamadas: %ld\n", sizes[i], result, calls);
    }
    return 0;
}
