C++ 数值的整数次方 (最小int取反,递归实现乘方)
剑指 Offer 16. 数值的整数次方
难度中等156收藏分享切换为英文接收动态反馈
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。
示例 1:
输入:x = 2.00000, n = 10 输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3 输出:9.26100
示例 3:
输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25
提示:
-100.0 < x < 100.0
-231 <= n <= 231-1
-104 <= xn <= 104
本题需要考虑底数x,指数n,分别大于、等于、小于0等情况:
x=0, n<0:是非法输入;
n<0:将结果取倒数;
n=-2147483648的时候,不能对n直接取相反数。
double类型的两个数不能直接用(==)判断是否相等,要设置阈值。
C++代码(注释的也是一种解法)
// class Solution {
// //x=0 时, n不能为负数
// //需要判断n是否为负 然后决定是否取倒数
// public:// double Power(double x, int n){
// if(n == 0) return 1;//奇数的最终右移结果是0
// if(n == 1) return x;//偶数的最终右移结果是1
// double res = Power(x, n>>1);
// res *= res;
// if((n & 0x1) == 1)
// //if(n & 1)//如果n是奇数 就需要多乘一次底数
// res *= x;
// return res;// }
// bool equal(double a, double b){
// if((a - b) > -0.000001 && (a - b) < 0.000001)
// return true;
// else
// return false;
// }
// double myPow(double x, int n) {//调用函数
// if(equal(x, 0.0) && n < 0) return 0.0;
// double absn = n;
// if(n < 0 && n == INT_MIN) absn = -(absn + 1);//负数边界值-2147483648 转为正数是会溢出的
// else if(n < 0) absn = -n;
// double res = Power(x, absn);
// if(n < 0)
// res = 1.0 / res;
// if(x < 0 && n == INT_MIN) res *= -1;
// return res;// }
// };
class Solution {
public:double myPow(double x, int n) {if(n==0) return 1;//考虑到负数右移永远是负数,if(n==-1) return 1/x;if(n&1) return myPow(x*x, n>>1)*x;//如果当前n是奇数 递归回来到这的时候 需要多乘一次else return myPow(x*x, n>>1);}
};
C++ 数值的整数次方 (最小int取反,递归实现乘方)相关推荐
- 《剑指offer》-- 数组中的逆序对、最小的K个数、从1到n整数中1出现的次数、正则表达式匹配、数值的整数次方
一.数组中的逆序对: 1.题目: 数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出 ...
- double取整数部分_剑指offer_16_数值的整数次方
//面试题16.数值的整数次方 //题目:实现函数double Power(double base,int exponent),求base的exponent次方. //不得使用库函数,同时需要考虑大数 ...
- JAVA实现数值的整数次方(《剑指offern》)
题目: 给定一浮点数base和int类型的整数exponent.求base的exponent次方 牛客网题目截图: 解答: public class Solution {public double P ...
- 【附可运行代码】剑指 Offer 16. 数值的整数次方
立志用最少的代码做最高效的表达 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn).不得使用库函数,同时不需要考虑大数问题. 示例 1: 输入:x = 2.00000, n = 10 ...
- 简单实现x的n次方pta_Day12 :数值的整数次方
剑指Offer_编程题--数值的整数次方 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方.保证base和exponent不同时 ...
- java中整数的整数次方_数值的整数次方java
偶数 A(n) = A(n/2) * A(n/2) 奇数A(n) = A((n-1)/2) * A((n-1)/2) 指数为0或小于1 怎么办? 底数为0 时返回什么? * 2 ^ 4 = 16 4D ...
- 剑指offer16. 数值的整数次方P110
剑指offer16. 数值的整数次方P110 题目:实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要 ...
- 剑指offer:面试题16. 数值的整数次方
题目:数值的整数次方 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 示例 1: 输 ...
- 题目11 数值的整数次方
/ // 1. 题目11 数值的整数次方 // 1.1 没有考虑负数和0的情况!!!! double Power(double dBase, int iExponent) {double dRes = ...
最新文章
- TLS/HTTPS 证书生成与验证
- 正则数字和小数点_Python中的正则表达式【不断补充~】
- 使用purge_relay_logs 清理relay log
- c#的chart标题_C#中CHART画图
- mysql定制化_【MySQL技巧】定制你的MySQL命令行-阿里云开发者社区
- matlab仿真计算代码代写,matlab/simulink程序代写
- 3.3.1网络原理数据链路层之差错控制(检错编码和纠错编码)-(奇偶校验码、CRC循环冗余码、海明码)
- ar面部识别_国内手机厂商AR布局报告
- linux转mysql_[转] linux下安装mysql服务器
- java反射机制及使用案例
- 计算机专业选电科还是华科,西交、华科与两电一邮:5所高校怎么选?工科选西交,学IT选北邮...
- python将xml写入excel_Python实现将xml导入至excel
- 学习笔记(13):C++编程FFMpeg(QT5+OpenCV)实战--实时美颜直播推流-ffmpegSDK开发环境准备,第一个ffmpeg项目创建...
- QT Libvlc录像功能的实现(提供32位和64位库)
- mysql constraint primary key_SQL PRIMARY KEY 约束
- 字符画君君C语言,20行代码制作字符画版小黄鸭表情包 | 文末送书抽奖结果
- 路由刷机(Breed)操作步骤
- 程序人生文章汇总(持续更新,方便查阅)
- python查询JCR分区
- coco数据集百度网盘下载