博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer系列6:数值的整数次方
阅读量:5068 次
发布时间:2019-06-12

本文共 1180 字,大约阅读时间需要 3 分钟。

在计算float和double型的变量时,判断值为0不能直接判断是否等于0,因为计算机表示小数时存在误差,所以判断两个数的误差的绝对值很小即可认为相等。

在要做除法运算时,如果除以2,用右移运算代替可以提高效率。

1 #include
2 using namespace std; 3 class Solution { 4 public: 5 double Power(double base, int exponent) { 6 if (base == 0) 7 { 8 return 0; 9 }10 if (exponent == 0)11 {12 return 1;13 }14 unsigned int absexponent = (unsigned int)exponent;//给指数取绝对值15 if (exponent < 0)16 {17 absexponent = (unsigned int)(-exponent);//如果是负数直接强转类型后数值错误,所以给他改正回去18 }19 double re=1;20 if(absexponent !=1)21 { 22 re = Power(base, absexponent >> 1);//右移除以223 re *= re;24 }25 26 if (absexponent & 0x1)//与1进行与运算判断这个数是否为奇数27 {28 re *= base;29 }30 if (exponent < 0)31 {32 re = 1 / re;33 }34 return re;35 }36 };37 int main()38 {39 Solution so;40 cout << so.Power(2, 4) << endl;41 return 0;42 }

我开始拿到这个题还在想这不是pow函数可以解决的事情吗?看了答案发现就是要注意已有的函数的实现方法。其中有一些小细节要注意。

转载于:https://www.cnblogs.com/neverland0718/p/10975512.html

你可能感兴趣的文章
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
F# 编程 借助 F# 构建 MVVM 应用程序
查看>>
网卡流量检测.py
查看>>
【转】Android的权限permission
查看>>
ajax
查看>>
poj1981 Circle and Points 单位圆覆盖问题
查看>>
POP的Stroke动画
查看>>
线程同步机制初识 【转载】
查看>>
SQL语句在查询分析器中可以执行,代码中不能执行
查看>>
yii 1.x 添加 rules 验证url数组
查看>>
html+css 布局篇
查看>>
SQL优化
查看>>
用C语言操纵Mysql
查看>>
轻松学MVC4.0–6 MVC的执行流程
查看>>
redis集群如何清理前缀相同的key
查看>>
Python 集合(Set)、字典(Dictionary)
查看>>
获取元素
查看>>
proxy写监听方法,实现响应式
查看>>