news 2026/4/18 8:26:41

【递归算法】快速幂解决 pow(x,n)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【递归算法】快速幂解决 pow(x,n)

题目链接:pow(x,n)

一、题目解析




题目很简单,要求x的n次幂。

要注意n的取值范围:n可能是负数,这时候我们要利用数学中x⁻ⁿ = 1 / xⁿ来转换;n可能是 -2³¹,若转换成正数则会超过 int 类型的最大取值 2³¹-1。

二、算法原理

2.1 解法一:循环

思路很简单,循环n次即可。

for (int i = 0; i < n; i ++) x *= x;

时间复杂度:O(N)

但是,当n取值很大时,比如 n = 1000,程序的效率就会降低,甚至超时。

2.2 解法二:快速幂

快速幂可以采用两种方法来实现:

  1. 递归实现✅
  2. 循环实现

我们这里采用递归实现。

先看示例1:

  • 要求 2¹⁰,我们可以通过 2⁵ * 2⁵ 来得到;
  • 要求 2⁵,我们可以通过 2² * 2² * 2 来得到;
  • 要求 2²,我们可以通过 2 * 2 来得到;
  • 要求 2,我们可以通过 2⁰ (1) * 2 来得到;

即:

三、代码实现

设计函数头——寻找子问题:

根据算法原理,我们可以知道,该问题的子问题是:计算所给的x的n次幂
因此函数头有两个参数x、n,返回值为与所给的x相同的类型:double pow(double x, int n)

设计函数体——子问题所做的事:

每一个子问题都是先得到x的n / 2次幂,然后根据当前n的奇偶性决定是 xⁿ * xⁿ,还是 xⁿ * xⁿ * x,即:

  • temp = pow(x, n / 2)
  • return (n % 2 == 0) ? temp * temp : temp * temp * temp
递归出口:

当 n == 0 时,返回1,因为所有数的0次幂都是1

代码实现如下:

class Solution { public double myPow(double x, int n) { // 分n为正负两个情况 return (n < 0) ? 1.0 / pow(x, -n) : pow(x, n); } public double pow(double x, int n) { // 递归出口 if (n == 0) return 1.0; double temp = pow(x, n / 2); // 分奇偶情况 return (n % 2 == 0) ? temp * temp : temp * temp * x; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 7:01:27

基于51单片机的智能水表检测水流量计流量报警器 水表 嵌入式diy

目录 硬件组成软件设计功能扩展注意事项参考方案 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 硬件组成 51单片机&#xff08;如STC89C52&#xff09;作为核心控制器&#xff0c;搭配霍尔传感器或涡轮流量计检测水流速&#xff0c;…

作者头像 李华
网站建设 2026/4/18 7:40:49

Phlux 传感器引起射击界的关注

无噪声 InGaAs 红外传感器正接受评估&#xff0c;拟应用于高端狩猎与专业射击光学设备红外雪崩光电二极管&#xff08;APD&#xff09;传感器制造商 Phlux Technology 宣称&#xff0c;其拥有专利的无噪声 InGaAs 红外传感器&#xff0c;已在严苛的国防、电信及工业应用中得到验…

作者头像 李华
网站建设 2026/4/18 7:03:03

一天一个开源项目(第2篇):Remotion - 用 React 程序化创建视频

引言 “如果视频制作也能像写代码一样&#xff0c;用组件、函数和逻辑来构建&#xff0c;那该多好&#xff1f;” 这是"一天一个开源项目"系列的第2篇文章。今天带你了解的项目是 Remotion&#xff08;GitHub&#xff09;。 想象一下&#xff0c;你不再需要打开 Aft…

作者头像 李华
网站建设 2026/4/9 14:39:08

第三十二周周报

文章目录 摘要Abstract一、论文的基本思想和贡献基本思想主要贡献 二、研究背景三、模型介绍四、Training1.初始化2、数据增强3、平铺策略 总结 摘要 本周阅读了经典图像分割论文 U-Net&#xff0c;重点学习了其网络结构设计与推理策略。论文提出对称的编码器–解码器架构&…

作者头像 李华
网站建设 2026/4/15 20:36:24

大数据领域数据湖的成本控制与优化

大数据领域数据湖的成本控制与优化&#xff1a;策略与实践 关键词&#xff1a;大数据、数据湖、成本控制、优化策略、数据治理、存储优化、计算资源管理 摘要&#xff1a;本文深入探讨大数据领域数据湖中成本控制与优化的关键方面。从数据湖概念的发展背景出发&#xff0c;阐…

作者头像 李华