#include <stdio.h>
// Optimized recursive solution to calculate pow(x, n)
// using divide and conquer
int power(int x, unsigned n)
{
// base condition
if (n == 0)
return 1;
// calculate sub-problem recursively
int pow = power
(x
, n
/ 2);
if (n & 1) // if y is odd
// else y is even
}
// main function
int main(void)
{
int x = -2;
unsigned n = 10;
printf("pow(%d,%d) = %d", x
, n
, power
(x
, n
));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBPcHRpbWl6ZWQgcmVjdXJzaXZlIHNvbHV0aW9uIHRvIGNhbGN1bGF0ZSBwb3coeCwgbikKLy8gdXNpbmcgZGl2aWRlIGFuZCBjb25xdWVyCmludCBwb3dlcihpbnQgeCwgdW5zaWduZWQgbikKewogICAgLy8gYmFzZSBjb25kaXRpb24KICAgIGlmIChuID09IDApCiAgICAgICAgcmV0dXJuIDE7CgogICAgLy8gY2FsY3VsYXRlIHN1Yi1wcm9ibGVtIHJlY3Vyc2l2ZWx5CiAgICBpbnQgcG93ID0gcG93ZXIoeCwgbiAvIDIpOwoKICAgIGlmIChuICYgMSkgLy8gaWYgeSBpcyBvZGQKICAgICAgICByZXR1cm4geCAqIHBvdyAqIHBvdzsKCiAgICAvLyBlbHNlIHkgaXMgZXZlbgogICAgcmV0dXJuIHBvdyAqIHBvdzsKfQoKLy8gbWFpbiBmdW5jdGlvbgppbnQgbWFpbih2b2lkKQp7CiAgICBpbnQgeCA9IC0yOwogICAgdW5zaWduZWQgbiA9IDEwOwoKICAgIHByaW50ZigicG93KCVkLCVkKSA9ICVkIiwgeCwgbiwgcG93ZXIoeCwgbikpOwoKICAgIHJldHVybiAwOwp9