实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
方法1(递归方法)
#include<stdio.h>
double func(double x, int n)
{
if (n == 0)
return 1;
if (n == 1)
return x;
double y = func(x, n / 2);//递归方法
return n % 2 == 0 ? y * y : y * y * x;
}
double myPow(double x, int n)
{
if (n == 0)
{
return 1;
}
return n > 0 ? func(x, n) : 1.0 / func(x, n);//考虑到n的正负值
}
int main()
{
printf("%f\n",myPow(2.00000,10));
printf("%f\n",myPow(2.10000,3));
printf("%f\n",myPow(0.50000,-3));
return 0;
}
运行截图如下:
对于此程序用到的递归方法图解如下:
假设x=2.00000,n=5
方法2(常规方法)
#include<stdio.h>
double myPow(double x, int n)
{
if (n == 0)
return 1;
double res = 1;
if(n < 0)
{
x = 1 / x;
n=-n;
}
while(n!=0)
{
res *= x;
n--;
}
return res;
}
int main()
{
printf("%f\n",myPow(2.00000,10));
printf("%f\n",myPow(-2.10000,3));
printf("%f\n",myPow(0.50000,-3));
return 0;
}
运行结果如下