剑指 Offer 16. 数值的整数次方

难度中等156收藏分享切换为英文接收动态反馈

实现 pow(xn) ,即计算 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取反,递归实现乘方)相关推荐

  1. 《剑指offer》-- 数组中的逆序对、最小的K个数、从1到n整数中1出现的次数、正则表达式匹配、数值的整数次方

    一.数组中的逆序对: 1.题目: 数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出 ...

  2. double取整数部分_剑指offer_16_数值的整数次方

    //面试题16.数值的整数次方 //题目:实现函数double Power(double base,int exponent),求base的exponent次方. //不得使用库函数,同时需要考虑大数 ...

  3. JAVA实现数值的整数次方(《剑指offern》)

    题目: 给定一浮点数base和int类型的整数exponent.求base的exponent次方 牛客网题目截图: 解答: public class Solution {public double P ...

  4. 【附可运行代码】剑指 Offer 16. 数值的整数次方

    立志用最少的代码做最高效的表达 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn).不得使用库函数,同时不需要考虑大数问题. 示例 1: 输入:x = 2.00000, n = 10 ...

  5. 简单实现x的n次方pta_Day12 :数值的整数次方

    剑指Offer_编程题--数值的整数次方 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方.保证base和exponent不同时 ...

  6. 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 ...

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

    剑指offer16. 数值的整数次方P110 题目:实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要 ...

  8. 剑指offer:面试题16. 数值的整数次方

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

  9. 题目11 数值的整数次方

    / // 1. 题目11 数值的整数次方 // 1.1 没有考虑负数和0的情况!!!! double Power(double dBase, int iExponent) {double dRes = ...

最新文章

  1. TLS/HTTPS 证书生成与验证
  2. 正则数字和小数点_Python中的正则表达式【不断补充~】
  3. 使用purge_relay_logs 清理relay log
  4. c#的chart标题_C#中CHART画图
  5. mysql定制化_【MySQL技巧】定制你的MySQL命令行-阿里云开发者社区
  6. matlab仿真计算代码代写,matlab/simulink程序代写
  7. 3.3.1网络原理数据链路层之差错控制(检错编码和纠错编码)-(奇偶校验码、CRC循环冗余码、海明码)
  8. ar面部识别_国内手机厂商AR布局报告
  9. linux转mysql_[转] linux下安装mysql服务器
  10. java反射机制及使用案例
  11. 计算机专业选电科还是华科,西交、华科与两电一邮:5所高校怎么选?工科选西交,学IT选北邮...
  12. python将xml写入excel_Python实现将xml导入至excel
  13. 学习笔记(13):C++编程FFMpeg(QT5+OpenCV)实战--实时美颜直播推流-ffmpegSDK开发环境准备,第一个ffmpeg项目创建...
  14. QT Libvlc录像功能的实现(提供32位和64位库)
  15. mysql constraint primary key_SQL PRIMARY KEY 约束
  16. 字符画君君C语言,20行代码制作字符画版小黄鸭表情包 | 文末送书抽奖结果
  17. 路由刷机(Breed)操作步骤
  18. 程序人生文章汇总(持续更新,方便查阅)
  19. python查询JCR分区
  20. coco数据集百度网盘下载

热门文章

  1. UTC/GMT/CST几种常见的时间概述
  2. CF A. DZY Loves Hash
  3. javaWeb中的Model1和Model2
  4. 求一个二叉树中距离最远的两个节点
  5. django1.4 关于处理静态文件的问题
  6. 起步,停车——走好你的IT运维管理之路
  7. Application Architecture Guide 2.0 (Chapter 7: Quality Attributes) Part 3
  8. poj 3614(最大流)
  9. python爬虫之图片
  10. hdu 2159 FATE 二维背包