* 对分查找
*/
/** \brief
* 对分查找
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
long int Pow(long x, unsigned int n);
long int Pow1(long x, unsigned int n);
long x;
unsigned int n;
x = 2;
n =11;
printf("%ld\n", Pow(x, n));
return 0;
}
long int Pow(long x, unsigned int n)
{
if (n == 0)
return 1;
if (n == 1)
return x;
if (n % 2 == 0)
return Pow(x*x, n/2);
else
return Pow(x*x, n/2) * x;
}
/*long int Pow1(long x, unsigned int n)
{
long y[100];
int i = 0;
while (n != 1) {
if (n % 2 == 0)
x = x*x;
else {
y[i++] = x;
x = x*x;
}
n /= 2;
}
for (i--; i >= 0; i--)
x *= y[i];
return x;
}*/