算法题目---数值的整数次方
来源:互联网 发布:软件评测师真题在线 编辑:程序博客网 时间:2024/06/11 18:57
//考虑不周
double Power1(double base,int exponent)
{double result = 1.0;
for(int i = 1;i<exponent;++i)
result *= base;
return result;
}
//判断浮点数是否相等
{
if((num1 - num2 > -0.0000001) && (num1 - num2 < 0.0000001) )
return true;
else
return false;
}
double PowerWithUnsignedExponent(double base,unsigned int exponent)
{
double result = 1.0;
for(int i =1;i<exponent;++i)
result *= base;
return result;
}
bool g_InvalidInput = false;
double PowerWithUnsignedExponent2(double base,unsigned int exponent);
double Power2(double base,int exponent)
{
//全局变量
if(equal(base,0.0) && exponent < 0)
{
g_InvalidInput = true;
return 0.0;
}
unsigned int absExponent = (unsigned int)(exponent);
if(exponent < 0)
absExponent = (unsigned int)(-exponent);
//double result = PowerWithUnsignedExponent(base,absExponent);
double result = PowerWithUnsignedExponent2(base,absExponent);
if(exponent < 0)
result = 1.0 / result;
}
double PowerWithUnsignedExponent2(double base,unsigned int exponent)
{
if(exponent == 0)
return 1;
if(exponent == 1)
return base;
double result = PowerWithUnsignedExponent2(base,exponent>>1);
result *= result;
if(exponent & 0x1 == 1)
result *= base;
return result;
}
void Test(double base, int exponent, double expectedResult, bool expectedFlag)
{
//double result = Power1(base, exponent);
double result = Power2(base, exponent);
if(abs(result - expectedResult) < 0.00000001 && g_InvalidInput == expectedFlag)
printf("Test passed.\n");
else
printf("Test failed.\n");
}
int main()
{
printf("Test1 begins.\n");
Test(2, 3, 8, false);
printf("Test2 begins.\n");
Test(-2, 3, -8, false);
printf("Test3 begins.\n");
Test(2, -3, 0.125, false);
printf("Test4 begins.\n");
Test(2, 0, 1, false);
printf("Test5 begins.\n");
Test(0, 0, 1, false);
printf("Test6 begins.\n");
Test(0, 4, 0, false);
printf("Test7 begins.\n");
Test(0, -4, 0, true);
}
阅读全文
0 0
- 算法题目---数值的整数次方
- 算法:数值的整数次方
- 题目1514:数值的整数次方
- 题目1514:数值的整数次方
- 题目1514:数值的整数次方
- 题目1514:数值的整数次方
- 【算法详解】求解数值的整数次方
- 数值的整数次方(算法)
- 算法题20 数值的整数次方
- 【算法】求数值的整数次方
- 算法题/数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- tomcat 原理详解
- 华为机试---识别有效的IP地址和掩码并进行分类统计
- 欢迎使用CSDN-markdown编辑器
- 三十四 iOS修改导航栏文字按钮字体的大小
- 单例模式的八种写法
- 算法题目---数值的整数次方
- Centos如何设置IP地址,LINUX怎么修改IP地址
- 【Quartz】——入门篇
- leetcode_two sum()
- [Leetcode] 263. Ugly Number 解题报告
- 给Qt5编写好的可执行文件更换图标
- mysql分页加排序数据重复问题解决方案
- Android全面插件化方案-RePlugin踩坑
- 读程序员面试宝典