剑指offer 13:数值的整数次方
2024-08-31 13:27:59
题目描述
给定一个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;
}
最新文章
- MYSQL命令行使用指南
- php类的__get和__set方法
- Makefile规则③规则语法、依赖、通配符、目录搜寻、目标
- jquery ajax error函数详解
- WSGI服务器实践二--实践一个基本功能的WSGI服务器
- eclipse不自动弹出提示(Alt+/ 快捷键失效)
- 超赞网页背景效果-canvas-nest.js
- 做环信聊天布局时遇到的问题(UITextView自适应高度和光标位置不正常)
- Java笔记——XML解析
- 201521123053《Java课程设计》第十四周学习总结
- 笔记+R︱信用风险建模中神经网络激活函数与感知器简述
- Android软件设置自动检查更新
- 10个经典的Java面试题集合
- spring boot maven打包可运行jar包
- nvidia-smi实时刷新并高亮显示状态
- 错误:php70w-common conflicts with php-common-5.3.3-49.el6.i686
- 代码:jquery小效果—— 吸顶
- os.path.md
- IOS文件系统及其相关操作(NSFileManager,NSFileHandle)
- C/C++函数指针(typedef简化定义)
热门文章
- Go-数据类型以及变量,常量
- jwt认证生成后的token后端解析
- python-schedule模块(定时任务)基于官方文档总结
- Dynamics CRM - js中用webapi基于fetchxml查询遇到的问题 -- Invalid URI: The Uri scheme is too long.
- socket调试工具(Mac版)
- AudioRecord 录制播放PCM音频
- linux内核的冷热页分配器
- elementui入门以及nodeJS环境搭建
- MySQL 的 4 种隔离级别,你了解么?
- 模版引擎Handlebars和Mustache