1. 问题

实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x^n )。其中:
-100.0 < x < 100.0
-2^31 <= n <= 2 ^31-1
-10^4 <= x ^n <= 10 ^ 4

2. 思路

  • 方法一

  • 方法二

  • 方法三

使用折半计算,每次把 n 缩小一半,这样 n 最终会缩小到 0,任何数的 0次方都为 1,这时候我们再往回乘,如果此时 n 是偶数,直接把上次递归得到的值算个平方返回即可,如果是奇数,则还需要乘上个 x 的值。

还有一点需要引起我们的注意的是 n 有可能为负数,对于 n 是负数的情况,我们可以先用其绝对值计算出一个结果再取其倒数即可。我们让 i 初始化为 n ,然后看 i 是否是 2 的倍数,是的话 x 乘以自己,否则 res 乘以 xi 每次循环缩小一半,直到为 0 停止循环。最后看 n 的正负,如果为负,返回其倒数。

3. 实现

3.1 方法一【遍历法】

class Solution {public:double myPow(double x, int n) {double f = 1.0;if (n == 0){return 1;}else if (n == 1){return x;}else{if (n > 0){for (int i = 1; i <= n; i++){f *= x;}}else{for (int i = 1; i <= abs(n); i++){f /= x;}}}return f;}
};

该方法在输入为 0.00001 和 2147483647 时会执行超时。

3.2 方法二

class Solution {public:double myPow(double x, int n) {double f = 1.0;if (n == 0){return 1;}else if (n == 1){return x;}else{if (n > 0){if (n % 2 == 1){return myPow(x, n / 2) * myPow(x, n / 2) * x;}else{return myPow(x, n / 2) * myPow(x, n / 2);}}else{if (n % 2 == 1){return 1.0 / (myPow(x, abs(n) / 2) * myPow(x, abs(n) / 2) * x);}else{return 1.0 / (myPow(x, abs(n) / 2) * myPow(x, abs(n) / 2));}}}}
};

3.3 方法三

class Solution {public double myPow(double x, int n) {double res = 1.0;for(int i = n; i != 0; i /= 2){if(i % 2 != 0){res *= x;}x *= x;}return  n < 0 ? 1 / res : res;}
}

计算一个数的 N 次方的多种解法相关推荐

  1. c 语言一个数的n次方,C 语言实例 - 计算一个数的 n 次方

    计算一个数的 n 次方,例如: 23,其中 2 为基数,3 为指数. #include int main() { int base, exponent; long long result = 1; p ...

  2. c 语言一个数的n次方,C 语言实例 – 计算一个数的 n 次方 - C 语言基础教程

    C 语言实例 计算一个数的 n 次方,例如: 23,其中 2 为基数,3 为指数. 实例 – 使用 while #include int main() { int base, exponent; lo ...

  3. C 语言实例 - 计算一个数的 n 次方

    C 语言实例 - 计算一个数的 n 次方计算一个数的 n 次方,例如: 23,其中 2 为基数,3 为指数.实例 - 使用 while #include <stdio.h>int main ...

  4. 新增Linux系统调用——计算一个数的三次方

    新增Linux系统调用   起初看到这个实验,完全是一脸懵啊,后来再看,依旧是一脸懵啊,再后来,借鉴了网上大佬们的教程,以及一天的时间折腾,终于完成了该实验.只是可惜了自己的电脑,CPU以80℃的温度 ...

  5. python幂次方计算公式_【python】计算一个数得n次方?

    题目:给定一个数d和n,如何计算d的n次方?例如:d = 2, n = 3, d的n次方为2**3 = 8 分析:递归得方法: (1)n = 0,那么计算结果肯定为1 (2)n = 1, 那么计算结果 ...

  6. C语言——pow函数的使用,计算一个数的n次方

    文章目录 头文件引用 原型 如何实现用pow函数开n次方 头文件引用 include<math.h> 原型 double pow( double x, double y ): 如何实现用p ...

  7. c语言计算阶乘的倒数和,for循环计算某个数的阶乘、阶乘和及其倒数的阶乘和...

    //4的阶乘 int jc = 4; //定义一个变量用来代表要计算的数值 long jd =1; //定义最终输出的阶乘 for(int i = 1; i <= jc;i++) //定义循环加 ...

  8. 每天一道LeetCode-----求一个数的n次方,n是很大很大的数,n用数组存储着

    Pow(x, n) 原题链接Pow(x, n) 给定一个数,求n次方.n次方可以分解成两个n/2次方相乘,所以递归即可. class Solution { public:double myPow(do ...

  9. Java中一个数的N次方

    在Java中一个数的N次方不可以写成:a^0这种形式,算得的数不正确: 正确的写法为Math.pow(a,0); 此外,Math中常用的函数有 /** *Math.sqrt()//计算平方根*Math ...

  10. python求所有参数的乘积_python 通过可变参数计算n个数的乘积方法

    Python编写一个函数,分享1*2*3*4...*n的乘积,编写主这是一种代码: def jc(n): i=1 s=1 for i in range(1,n+1): s=s*i i+=1 retur ...

最新文章

  1. Asp.Net源码(转载)
  2. QTableview 获取鼠标坐标的item(QModelIndex)
  3. python end of statement_17个新手常见Python运行时错误
  4. 杭电1596find the safest road
  5. DoWhile(Java)
  6. error C2440: “<function-style-cast>”: 无法从“IplImage *”转换为“cv::Mat”
  7. lisp语言cond和if套用_AutoCAD LISP 循环选择语句cond
  8. IDEA集成MAVEN 报错
  9. 数字图像处理和计算机视觉课程大纲,数字图像处理B课程教学大纲.doc
  10. Linux网络编程 | UDP编程
  11. 2020手机的像素密度ppi排行_5g手机排行榜最新2020年11月5g手机性价比排行榜
  12. 办公人员必须会的15种求和技巧
  13. https://juejin.im/entry/58622ebc570c3500694ec86c
  14. 智能手环开发之 实现蓝牙(BLE)基本功能
  15. 通过机器学习预测电网平均总负荷
  16. 计算机中sqrt函数是什么意思,(excle sqrt)excel中的SQRT是什么意思?
  17. python中错误TypeError: __init__() got an unexpected keyword argument 'shape'
  18. 【C++程序设计教程(第三版)钱能】 学习笔记 上半部/C++过程化语言基础
  19. Ubuntu启用Cgroups V2
  20. 华为哪款手机将用鸿蒙系统,鸿蒙系统终于来了!这几款华为手机都可以升级了...

热门文章

  1. DB2新建用户及数据库过程
  2. 计算机网络设备维修会计分录,设备维修记录什么会计科目
  3. 爬虫_app 2.7 packet capture抓包工具介绍
  4. 这样演示正弦和余弦的相互变换,不怕难懂!
  5. 【Pandas 基础应用 合并Excel工作簿】
  6. 【loj6184】无心行挽(虚树+倍增)
  7. Excel 常用的九十九个技巧 Office 自学教程快速掌握办公技巧
  8. 佳能相机CF卡损坏MP4视频数据恢复技术
  9. 如何免费下载论文资料
  10. [微软中国]秋季校园招聘开启了(可内推)