剑指offer——数值的整数次方
程序员文章站
2022-06-17 17:09:06
...
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
将指数大于0,小于0,等于0(底数不为0)的情况分开。其实指数为0的情况不必单独拎出来(不进入if直接返回result为1.0),真正需要考虑的是,底数为0而指数为负的情况,数学上没有意义。书上的做法是设置一个全局变量,检查输入是否有效,这种情况下该bool值为true,返回0。怎样判断是正常返回0还是异常返回0呢?调用函数检查该全局变量为true还是false。
class Solution {
public:
double Power(double base, int exponent) {
double result = 1.0;
if(exponent == 0 && base!= 0) return 1.0;
if(exponent > 0)
{
while(exponent)
{
result *= base;
exponent--;
}
}
else
{
while(exponent)
{
result /= base;
exponent++;
}
}
return result;
}
};
注意:
两个double值由于精度原因不能直接用==来比较是否相等,要看它们的差的绝对值是否小于一个很小的值。
优化:
计算一个数的正整数次方时,可加速,时间复杂度由o(n)变为o(logn)
下一篇: 剑指offer --- 数值的整数次方
推荐阅读
-
剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。
-
剑指offer31:整数中1出现的次数(从1到n整数中1出现的次数)
-
剑指offer28:找出数组中超过一半的数字。
-
剑指offer27:按字典序打印出该字符串中字符的所有排列
-
C#版剑指Offer-001二维数组中的查找
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
剑指offer JZ31 整数中1出现的次数 Python 解
-
剑指offer:调整数组顺序使奇数位于偶数前面
-
剑指offer JZ54 字符流中第一个不重复的字符 Python 多解
-
[算法练习-剑指offer]题18.二叉树的镜像(Java)