代码实现
#include<math.h>
double Pow(int a ,int b) {
//a^b = a*a^(k-1)
//当a=2、b=4时
//n^ k = 2 ^ 4 = 16 (即2×2×2×2)
//n * n ^ (k - 1) = 2 * 2 ^ (3) = 2 * 8 = 16
if (b<0)
{
return (1.0 /(Pow(a, -b)));
}
else if (b == 0)
{
return 1;//任何数的0次方等于1
}
else {
return a * Pow(a, b - 1);
}
}
int main() {
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
double ret = Pow(a, b);
printf("%lf", ret);
return 0;
}
算法
当a=2、b=4时,我们有:
n^k = 2^4 = 16 (即2×2×2×2)
n * n^(k-1) = 2 * 2^(3) = 2*8 = 16