博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer16. 数值的整数次方P110
阅读量:3950 次
发布时间:2019-05-24

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

剑指offer16. 数值的整数次方P110

题目:实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。

const double esp = 1e-6; bool isValid = false;   // power函数返回0时,判断合不合法,true时不合法double powerWithUnsignedExponent(double base, int exponent) {
// 此输入保证指数非负 if (exponent == 0) return 1; if (exponent == 1) return base; // 指数除以2递归 double ans = powerWithUnsignedExponent(base, exponent >> 1); ans *= ans; // 先在上一步递归里算出来a的(n/2)次方, 再平方 if ((exponent & 1)) {
// 如果指数是奇数还要再乘以base (规律见p112) ans *= base; } return ans;}double power(double base, int exponent) {
isValid = false; // 这是全局变量,不能省 ,默认合法 if (fabs(base - 0.0) <= esp && exponent < 0) {
isValid = true; // 不合法 的0.0 return 0.0; } if (exponent == 0) return 1.0; if (base == 0) {
return 0.0; // 合法的0.0 } //先把指数按正数处理 int temp = exponent < 0 ? -exponent : exponent; double ans = powerWithUnsignedExponent(base, temp); // 如果指数是负数,结果取倒数 if (exponent < 0) ans = 1 / ans; return ans; }

转载地址:http://jhzzi.baihongyu.com/

你可能感兴趣的文章
linux学习之shell脚本if判断参数-n,-d,-f等
查看>>
linux学习之windos文件在linux里面乱码解决
查看>>
idea快捷键
查看>>
linux学习之shell遍历数组
查看>>
python函数取参及默认参数使用
查看>>
linux学习之shell中的${},##, %% , :- ,:+, ? 的使用
查看>>
Spring学习之Filter、Interceptor、Aop实现与区别
查看>>
Spring 添加@Autowired注释, 注入对象却为空
查看>>
springSecurity学习
查看>>
通过Java的api操作redis
查看>>
jquery基本选择器
查看>>
linux学习之shell字符串大小写转换
查看>>
Linux下用base64对字符串进行加密解密
查看>>
H5走迷宫小游戏
查看>>
mysql建表 表名与关键字冲突
查看>>
mysql 创建单表外键关联多表
查看>>
postman使用
查看>>
ClassNotFoundException和NoClassDefFoundError的区别
查看>>
Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化
查看>>
spring注解@Primary与@Qualifier
查看>>