11_数值的整数次方
来源:互联网 发布:光线cms论坛 编辑:程序博客网 时间:2024/05/02 00:49
要注意的几个地方:1.如何判断两个double类型的数据是否相等。2.需要进行Power有效性的判断,0的负指数次方没有意义。3.在进行power运算的时候要考虑效率。
#include<iostream>using namespace std;bool isValid = true;bool isPositive = true;bool doubleEqual(double number1, double number2) {if(number1 - number2 < 0.0000001 && number1 - number2 > -0.0000001) {return true;} else {return false;}} double PowerWithPositiveExponent(double base, unsigned int exponent) {if(exponent == 1) {return base;}if(exponent == 0) {return 1;}if(exponent & 0x01) {return PowerWithPositiveExponent(base, exponent >> 1) * PowerWithPositiveExponent(base, exponent >> 1) * base;} else {return PowerWithPositiveExponent(base, exponent >> 1) * PowerWithPositiveExponent(base, exponent >> 1);}}double Power(double base, int exponent) {isValid = true;isPositive = true;if(doubleEqual(base, 0.0) && exponent < 0) {isValid = false;cout<<"this is invalid option.";return 0;}if(exponent < 0) {isPositive = false;exponent = 0 - exponent;}double result = PowerWithPositiveExponent(base, (unsigned int)exponent);if(!isPositive) {result = 1.0 / result;}return result;}int main() {cout<<"Power(3.0, 2) = "<<Power(3.0, 2)<<endl;cout<<"Power(3.0, -2) = "<<Power(3.0, -2)<<endl;cout<<"Power(0.0, -2) = "<<Power(0.0, -2)<<endl;cout<<"Power(0.1, -2) = "<<Power(0.1, -2)<<endl;cout<<"Power(0.1, 2) = "<<Power(0.1, 2)<<endl;cout<<"Power(2.0, 33) = "<<Power(2.0, 32)<<endl;cout<<"Power(2.0, 64) = "<<Power(2.0, 64)<<endl;return 1; }
0 0
- 11_数值的整数次方
- 11_数值的整数次方
- 剑指Offer_面试题11_数值的整数次方
- 11 数值的整数次方
- 11、数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 嵌入式开发学习路线图
- 嵌入式系统开发学习如何起步、如何深入?
- windows下用vs2010编译ffmpeg
- 杭电 Digital Roots
- 光棍节的快乐
- 11_数值的整数次方
- hdu 3449 Consumer(0,1背包)
- Android ListView使用详解
- srm 619 T2
- 孙鑫MFC视频第二节代码练习(一)类和结构体,类的定义和声明
- 2014年暑假总结
- 函数调用过程探究
- GreenDao 学习笔记 1
- uva 10651 Pebble Solitaire(动态规划:记忆化搜索)