当前位置: 首页 > news >正文

【递归算法】快速幂解决 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; } }
http://www.jsqmd.com/news/299798/

相关文章:

  • AI原生应用领域AI工作流的团队协作模式
  • ARC213
  • AI智能名片链动2+1模式S2B2C商城小脚本在客服沟通中的应用与效果
  • 基于51单片机的智能空调系统 温度控制 智能家居
  • 基于51单片机的智能药盒 GSM短信 药量检测 定时吃药
  • 基于51单片机的智能路灯控制系统 人体感应 灯光控制 嵌入式定制
  • Java计算机毕设之基于springboot的小学课后服务管理平台培训机构课后服务平台小程序(完整前后端代码+说明文档+LW,调试定制等)
  • 【毕业设计】基于springboot的房产交易系统(源码+文档+远程调试,全bao定制等)
  • 2025年教我学英语 - 动植物
  • 【无人机控制】基于LQR 气动特性 + 刚体运动学,建立固定翼飞行器的非线性动力学模型,并在巡航点做小扰动线性化,得到6 阶状态空间模型附matlab代码
  • 【无人机控制】基于生物启发控制策略(Vs1-Vs4 级联控制)的四旋翼无人机轨迹跟踪附matlab代码
  • 完整教程:Linux网络编程—传输层协议UDP和TCP
  • Unicode 码点(Code Point) 与 它的 UTF-8编码, UTF-16编码的换算程序
  • 智能家居控制系统开题报告
  • SentGraph:用于多跳检索增强问答的层次化句子图谱
  • 吐血推荐9个一键生成论文工具,本科生搞定毕业论文!
  • 糕手的int标准化输出
  • 2026年郑州GEO优化公司推荐TOP3:从技术到效果的实战选型指南
  • 【毕业设计】基于springboot的培训机构课后服务平台小程序(源码+文档+远程调试,全bao定制等)
  • 【路径规划】基于RRT算法实现自主机器人进行路径规划附matlab代码
  • 2026年读书
  • 2026年青岛GEO优化公司推荐TOP5:从技术实力到落地效果的深度评估
  • 人人租平台苹果17监管机回收价格,全国上门回收
  • Appium实现Android应用材料爬取:从环境搭建到实战优化
  • 第77天(中等题 链表)
  • 【效率革命】美工一天只能修 50 张?揭秘 AI 批量图像翻译如何打破“人工瓶颈”,实现日产 5000 张的极速上新!
  • 【售后必看】说明书全是中文,老外看不懂退货?揭秘 AI 如何一键翻新“纸质说明书”,让 Listing 评分稳在 4.8!
  • C++ 信号量
  • 老年人能力评估系统开发Day2
  • 2026年乌鲁木齐GEO优化公司推荐TOP3:产业深度适配+全链路效果的选型指南