题目描述

给定一个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;
}

最新文章

  1. MYSQL命令行使用指南
  2. php类的__get和__set方法
  3. Makefile规则③规则语法、依赖、通配符、目录搜寻、目标
  4. jquery ajax error函数详解
  5. WSGI服务器实践二--实践一个基本功能的WSGI服务器
  6. eclipse不自动弹出提示(Alt+/ 快捷键失效)
  7. 超赞网页背景效果-canvas-nest.js
  8. 做环信聊天布局时遇到的问题(UITextView自适应高度和光标位置不正常)
  9. Java笔记——XML解析
  10. 201521123053《Java课程设计》第十四周学习总结
  11. 笔记+R︱信用风险建模中神经网络激活函数与感知器简述
  12. Android软件设置自动检查更新
  13. 10个经典的Java面试题集合
  14. spring boot maven打包可运行jar包
  15. nvidia-smi实时刷新并高亮显示状态
  16. 错误:php70w-common conflicts with php-common-5.3.3-49.el6.i686
  17. 代码:jquery小效果—— 吸顶
  18. os.path.md
  19. IOS文件系统及其相关操作(NSFileManager,NSFileHandle)
  20. C/C++函数指针(typedef简化定义)

热门文章

  1. Go-数据类型以及变量,常量
  2. jwt认证生成后的token后端解析
  3. python-schedule模块(定时任务)基于官方文档总结
  4. Dynamics CRM - js中用webapi基于fetchxml查询遇到的问题 -- Invalid URI: The Uri scheme is too long.
  5. socket调试工具(Mac版)
  6. AudioRecord 录制播放PCM音频
  7. linux内核的冷热页分配器
  8. elementui入门以及nodeJS环境搭建
  9. MySQL 的 4 种隔离级别,你了解么?
  10. 模版引擎Handlebars和Mustache