题目:实现函数double Power(double num,int n),求num的n次方,不得使用库函数,不需要考虑大数问题。
代码示例:
#include<iostream>
using namespace std;
const double eps = 0.00000001;
long double Power(double num, int n)
{
if (n > 0)
{
long double res = num;
for (int i = 0; i < n-1; i++)
res *= num;
return res;
//===略微优化一下乘方。
/*long double tmp = Power(num, n >> 1);
long double res = tmp*tmp;
if ((n &0x01)==1)
res *= num;
return res;*/
}
else if (n == 0)
{
if (num > eps || num < -eps)
return 1;
else
throw exception("0的0次方无意义!");
}
else
{
if (-eps < num&&num < eps)
throw exception("0的负数次方无意义!");
else
{
return 1.0/Power(num, -n);
}
}
}
void main()
{
double num = 0;
int n = 3;
long double res = 0;
cout << num << "的" << n << "次方为:";
try{
res = Power(num, n);
}
catch(exception &e)
{
cout << e.what() << endl;
}
cout << res << endl;
}