100题之数值的整数次方

    技术2022-05-20  51

    题目:实现函数double Power(double base, int exponent),求base的exponent次方。不需要考虑溢出。

    //============================================================================ // Name : 100题之数值的整数次方.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> using namespace std; double PowerWithUnsignedExponent(double base, unsigned int length) { double basic=base; double result=1.0; while(length>0) { if(length&0x01) { result*=basic; } basic*=basic; length>>=1; } return result; } bool g_InvalidInput=false; double Power(double base,int exponent) { g_InvalidInput=false; if(!base&&exponent<0) { g_InvalidInput=true; return 0.0; } if(!exponent) return 0.0; unsigned int length; if(exponent<0) length=static_cast<unsigned int>(-exponent); else length=static_cast<unsigned int>(exponent); double result= PowerWithUnsignedExponent(base, length); if(exponent > 0) return result; return 1.0/result; } int main() { double result; result=Power(0,-2); if(!g_InvalidInput) cout<<result<<endl; else cout<<"invalid input"<<endl; result=Power(2,-2); if(!g_InvalidInput) cout<<result<<endl; else cout<<"invalid input"<<endl; result=Power(4,5); if(!g_InvalidInput) cout<<result<<endl; else cout<<"invalid input"<<endl; result=Power(1,3); if(!g_InvalidInput) cout<<result<<endl; else cout<<"invalid input"<<endl; return 0; }  


    最新回复(0)