#include <stdio.h>

float power(float x, int n)
{
    float temp;

    printf("Power %f, %d\n", x, n);

    if( n == 0)
        return 1;
    temp = power(x, n/2);

    printf("%f\n", temp);
    if ((n % 2) == 0)
        return temp*temp;
    else
    {
        if(n > 0)
            return x*temp*temp;
        else
            return (temp * temp) / x;
    }
}

int main()
{
    float res = power(2, 4);
    printf("Result 2^4 = %f \n\n", res);

    res = power(2, 3);
    printf("Result 2^3 = %f \n\n", res);

    res = power(2, -2);
    printf("Result 2^-2 = %f \n\n", res);

    res = power(2, -4);
    printf("Result 2^-4 = %f \n\n", res);

    res = power(-2, -3);
    printf("Result 2^4 = %f \n\n", res);

    return 0;
}
