【1】题目
【2】思路
(1)底数有四种情况:小于0,等于0,大于0小于1,大于1
(2)同样指数也存在四种情况:小于0,等于0,大于0小于1,大于1(但是int不考虑0到1范围的数)
(3)因此有四种情况:分别为底数为0,指数小于1,指数为0,指数大于1
注意 高精度的数判断是否相等,不能直接用==号,因为尾部精度不同,需要将两个数相减如果差值保存在一定区域,则可以认为相等。
【3】代码
#include <iostream>
#include<vector>
#include<time.h>
using namespace std;
//数值的整数次方
//高精度的数判断是否相等,不能直接用==号,因为尾部精度不同,
//需要将两个数相减如果差值保存在一定区域,则可以认为相等。
//底数有四种情况:小于0,等于0,大于0小于1,大于1
//同样指数也存在四种情况:小于0,等于0,大于0小于1,大于1(但是int不考虑0到1范围的数)
//判断两个高精度的数是否相等。
bool equal(double numberOne, double numberTwo)
{
double subValue = abs(numberOne - numberTwo);
if (subValue<=0.000001)
{
return true;
}
else
{
return false;
}
}
double PowerWithExponent(double base, int exponent)
{
double result = 1.0;
for (size_t i = 0; i < abs(exponent); i++)
{
result *= base;
}
return result;
}
//计算指数
double Power(double base, int exponent)
{
//指数小于0,基数取倒数;
//指数等于0,基数为1;
//指数大于1,基数相乘
//基数为0,无意义;
//判断基数是否为0
if (equal(base,0.0))
{
return 0;
}
if (exponent<0)
{
exponent = abs(exponent);
double result = PowerWithExponent(base, exponent);
return 1.0/result;
}
else if(exponent > 0) {
double result = PowerWithExponent(base, exponent);
return result;
}
else
{
return 1;
}
}
void main()
{
double base=-10;
int exponent=-0;
double result;
result=Power(base, exponent);
cout << result << endl;
cin.get();
}