剑指Offer——(12)数值的整数次方
来源:互联网 发布:linux 怎么写shell脚本 编辑:程序博客网 时间:2024/05/21 10:45
题目描述:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
实现如下:
//方法一:循环//此题不需要考虑计算后值溢出的情况,即不存在大数情况//异常情况://底数为0时->0.0//指数为0时->1.0(数学定义)//指数为负数时,需要考虑先计算指数绝对值的结果,再取倒数class Solution {public: double Power(double base, int exponent) { //底数为0时,因为base为double类型,所以需要进行范围判断 if (base - 0 <= 0.0000001 && base - 0 >= -0.0000001) return 0.0; if (exponent == 0) return 1.0;//指数为0,return double res = base; int unsigned_exponent = abs(exponent);//先取绝对值,考虑exp为负 for (int i = 2; i <= unsigned_exponent; ++i) { res *= base; } if (exponent < 0) res = 1.0 / res;//exp为负数时,取res的倒数 return res; }};//方法二:递归//计算的指数若为n,则只需计算指数为(n/2)时的值,用这个值再平方就可以得到指数为n的值//注意://n为奇数时。需要再乘以一个base,因为(n/2)向下取整//exponent还是先计算为正数的情况,之后再判断是否求倒数class Solution{public: double unsignedPower(double base, int exponent) { if (exponent == 1)//指数为1,return base return base; else if (exponent == 0)//指数为0,return 1 return 1; double res = unsignedPower(base, exponent >> 1);//右移一位->除2 res *= res;//再平方,减少运算次数 if (exponent & 0x1) res *= base;//判断指数是否为奇数,与1异或->模2 return res; } double Power(double base, int exponent) { //判断底数是否为0 if (base - 0 <= 0.0000001 && base - 0 >= -0.0000001) return 0.0; if (exponent == 0) return 1.0; //判断指数是否为0 if (exponent < 0) return 1.0 / unsignedPower(base, abs(exponent));//负指数应求倒数 else return unsignedPower(base, abs(exponent)); }};
0 0
- 剑指Offer——(12)数值的整数次方
- 剑指offer—数值的整数次方
- 剑指offer—数值的整数次方
- 剑指offer—数值的整数次方
- 剑指offer(12)—数值的整数次方
- 剑指offer 12 数值的整数次方
- 剑指offer(12):数值的整数次方
- 【剑指offer-解题系列(12)】数值的整数次方
- 剑指offer第12题(数值的整数次方)
- 数值的整数次方(剑指Offer 第 12 题)
- 剑指offer——数值的整数次方
- 《剑指offer》——数值的整数次方
- 《剑指Offer》学习笔记——数值的整数次方
- 剑指offer——数值的整数次方
- 数值的整数次方——剑指offer
- 剑指offer——数值的整数次方
- 剑指offer——数值的整数次方
- 剑指offer——数值的整数次方
- 明德扬FPGA设计模块划分方法(1)
- type-cast operator
- mfc标题栏重绘
- Java登录网站多个账号整理斗米简历(一)
- 设置Tomcat不自动部署
- 剑指Offer——(12)数值的整数次方
- ThinkPHP汉字乱码的处理
- C# 读取config文件
- tensorflow学习指南
- Java线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别
- NYOJ-250-ROOM ASSIGNATION(第三届河南省程序设计大赛(复杂线段树))
- 【小程序】清空input框内容
- BigDecimal的用法
- JavaScript数据结构——队列的实现