题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
 

问题分析

计算一个浮点数的整数次方,主要考察的是对输入数据的完整性的预估能力。针对此问题,输入数据可能存在以下情况:

1.底数不为0,指数都为整数

2.底数不为0,指数都为负数

3.底数为0,指数为负数(出现零除情况)

4.底数为0,指数为正数(给定特殊值0或1)

代码实现的逻辑并不复杂,主要是需要考虑到所有可能存在的输入情况,同时需要注意,对于浮点数,是不可以直接使用“==”直接对两数进行比较的。

下面给出C++代码实现:

class Solution {
public:
double Power(double base, int exponent) {//排除零除的情况出现
if(std::abs(base-0.0)<(1e-) && exponent<){return 0.0;
}
bool isnegative=(exponent<)? true:false;
if(isnegative){
return 1.0/calc_power(base,-exponent);
}
else{
return calc_power(base,exponent);
}
}
double calc_power(double base,int unsignedexp){
double res=1.0;
for (int i=;i<unsignedexp;i++){
res*=base;
}
return res;
}
    
};

如果希望提高 calc_power函数的计算效率,可以使用如下递归的实现方法,时间复杂度从O(n)降到O(logn),但栈递归的空间复杂度也变为O(logn)

double calc_power(double base,int unsignedexp){
//log(n)时间复杂度,同样递归深度也为log(n)
if (unsignedexp==){
return 1.0;
}
if (unsignedexp==){
return base;
}
double result = calc_power(base, unsignedexp>>);
result*=result;
if((unsignedexp & 0x1)==){
result*=base;
}
return result;
}

剑指offer 13:数值的整数次方的更多相关文章

  1. 《剑指offer》 数值的整数次方

    本题来自<剑指offer> 数值的整数次方 题目: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路: 代码从三个方面处 ...

  2. 【剑指Offer】数值的整数次方 解题报告(Python)

    [剑指Offer]数值的整数次方 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews ...

  3. 【Java】 剑指offer(15) 数值的整数次方

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 实现函数double Power(double base, int ...

  4. (3)剑指Offer之数值的整数次方和调整数组元素顺序

    一 数值的整数次方 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 问题解析: 这道题算是比较麻烦和难一点的一个了.我这里采 ...

  5. 【剑指offer】数值的整数次方

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/25506085 转载请注明出处:http:// ...

  6. Go语言实现:【剑指offer】数值的整数次方

    该题目来源于牛客网<剑指offer>专题. 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不 ...

  7. 剑指Offer 12. 数值的整数次方 (其他)

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 题目地址 https://www.nowcoder.com/practice/ ...

  8. 剑指 Offer 16. 数值的整数次方

    实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 来源:力扣(LeetCode) 链接 ...

  9. 剑指OFFER之数值的整数次方(九度OJ1514)

    题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 输入: 输入可能包含多个测试样例.对于每个输入文件,第一行输入一个整数T,表 ...

  10. 剑指offer:数值的整数次方

    题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路: 一开始直接用一个for循环做连乘,测了一下,发现这个指数可能是负 ...

随机推荐

  1. PHP fnmatch 文件系统函数

    定义和用法 fnmatch - 用模式匹配文件名 目前该函数无法在 Windows 或其它非 POSIX 兼容的系统上使用. 版本支持 PHP4 PHP5 PHP7 4.3.0(含)+支持 支持 支持 ...

  2. Last 2 dimensions of the array must be square

    这个报错是因为我们在求解行列式的值的时候使用了: np.linalg.det(D) 但是D必须是方阵才可以进行运算,不是方阵则会报错,我们把之前的行列式更改为方阵就不会再报错了,当然这也是numpy自 ...

  3. QT--HTTP文件下载器

    QT--HTTP文件下载器 1.pro文件添加 QT       += core gui network 2.头文件 #include <QNetworkAccessManager> #i ...

  4. Redis Cluster 集群三主三从高可用环境搭建

    前言 Redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用. Window环境下载地址:https://github.com/tporadowski/redis ...

  5. redis5.0.4安装配置

    1.下载redis wget http://download.redis.io/releases/redis-5.0.4.tar.gz 2.解压到opt目录 tar -zxvf redis-5.0.4 ...

  6. RAC_多路径配置

    多路径配置 http://blog.itpub.net/31397003/viewspace-2143390/ 挂盘/配置好yum源 2.程序包的安装 device-mapper-1.02.95-2. ...

  7. 对比keep-alive路由缓存设置的2种方式

    方式有两种 .路由元信息(2.1.0版本之前) .属性方式(2.1.0版本之后新增) Vue2.1.0之前: 想实现类似的操作,你可以: 配置一下路由元信息 创建两个keep-alive标签 使用v- ...

  8. CSS中层叠和继承的概念。

    继承 CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代.比如下面代码: 1 2 3 4 5 6 7 8 9 <ht ...

  9. oracle中utl_raw

    RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节.LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变 ...

  10. Python学习记录:括号配对检测问题

    Python学习记录:括号配对检测问题 一.问题描述 在练习Python程序题的时候,我遇到了括号配对检测问题. 问题描述:提示用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确, ...