实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
如果我们求一个数字的32次方。除了用32个这个数字相乘。
我们还可以,求2数字的平方。在平方的基础上,求4次方。4次方的基础上,求8次方。8次方的基础上,求16次方。16次方的基础上,求32次方。
那么我们一定会用到下面的公式
//运行时间:3ms
//占用内存:480K
class Solution {
public:bool g_InvalidInput = false;//设置输入变量标志位,True代表出现0的非正整数次方计算double Power(double base, int exponent) {g_InvalidInput = false;if((base==0.0)&&exponent<=0)//计算0的非正整数次方,标志为为true,返回0.0{g_InvalidInput = true;return 0.0;}double result = myPow(base,exponent);//获取base的真整数次方if(exponent<0) result = 1/result;//如果指数是负数 求结果的导数return result;}//计算base的正整数次方double myPow(double base, int exponent){ if(exponent==0)return 1;if(exponent==1)return base;double result =myPow(base,exponent/2);//可替换代码1:double result =PowerCompute(base,exponent>>1);用右移运算符代替除以2//可能会显示超出内存result *=result;if(exponent%2)//可替换代码2:if(exponent &0x1 ==1) 用位与运算符代替求余运算符号result *= base;return result;}
};
本文用来测试C++基类和派生类构造函数,析构函数,和拷贝构造函数的调用次序。
运行环境:SUSE Linux Enterprise Server 11 SP2 (x86_64)
#include
MysqlHelper.class.php 1: