【递归算法】快速幂解决 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.mzph.cn/news/1216008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI原生应用领域AI工作流的团队协作模式

AI原生应用领域AI工作流的团队协作模式 关键词:AI原生应用、AI工作流、团队协作模式、协作流程、协作工具 摘要:本文聚焦于AI原生应用领域中AI工作流的团队协作模式。先介绍了相关背景知识,包括目的范围、预期读者等。接着通过故事引入核心概念,以通俗易懂的方式解释了AI原…

ARC213

ARC213A. Swapping Game 因为从任意排列到任意排列至多需要 \(\frac{L(L−1)}{2}\) 步,所以不必考虑出现 \(L(L−1)\) 个连续步骤都无法得到 \(C_i\) 的情况。DP 即可。 B. Hamming Distance is not 1 起初觉得只选 \…

AI智能名片链动2+1模式S2B2C商城小脚本在客服沟通中的应用与效果

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于51单片机的智能空调系统 温度控制 智能家居

目录 基于51单片机的智能空调系统概述系统核心功能硬件组成软件设计应用场景与优势注意事项 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 基于51单片机的智能空调系统概述 基于51单片机的智能空调系统是一种低成本、高效率的智能家…

基于51单片机的智能药盒 GSM短信 药量检测 定时吃药

目录 基于51单片机的智能药盒系统概述核心功能模块硬件设计要点软件算法逻辑扩展功能设计应用场景适配 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 基于51单片机的智能药盒系统概述 智能药盒系统以51单片机为核心控制器&#xff0…

基于51单片机的智能路灯控制系统 人体感应 灯光控制 嵌入式定制

目录 系统概述硬件组成软件设计功能扩展应用场景定制化服务 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统概述 基于51单片机的智能路灯控制系统是一种嵌入式解决方案&#xff0c;通过人体感应模块&#xff08;如红外传感器&…

Java计算机毕设之基于springboot的小学课后服务管理平台培训机构课后服务平台小程序(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【毕业设计】基于springboot的房产交易系统(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2025年教我学英语 - 动植物

2025年教我学英语 - 动植物1、老虎 - tiger [ˈtaɪɡə(r)] 狮子 - lion [ˈlaɪən] 熊猫 - panda [ˈpndə] 猴子 - monkey [ˈmʌŋki] 大象 - elephant [ˈelɪfənt]2、狐狸 - fox [fɒks] 狼 - wolf [wʊlf] 熊…

【无人机控制】基于LQR 气动特性 + 刚体运动学,建立固定翼飞行器的非线性动力学模型,并在巡航点做小扰动线性化,得到6 阶状态空间模型附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

【无人机控制】基于生物启发控制策略(Vs1-Vs4 级联控制)的四旋翼无人机轨迹跟踪附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#…

完整教程:Linux网络编程—传输层协议UDP和TCP

完整教程:Linux网络编程—传输层协议UDP和TCP2026-01-25 22:44 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: …

Unicode 码点(Code Point) 与 它的 UTF-8编码, UTF-16编码的换算程序

熟悉Unicode标准的朋友都知道,统一码的码点(又称码值),在使用往往不是直接使用,而是使用UTF-8或UTF-16或UTF-32编码方法来进行编码后再用。 UTF32编码就是直接用四字节来表示Unicode编码,不足四字节的补0,这样对英…

智能家居控制系统开题报告

智能家居控制系统开题报告 一、选题背景 随着物联网、人工智能、大数据等技术的快速迭代&#xff0c;以及居民生活水平的提升与消费需求的升级&#xff0c;智能家居已成为建筑智能化、家庭数字化转型的核心方向。智能家居控制系统作为智能家居生态的核心枢纽&#xff0c;通过整…

SentGraph:用于多跳检索增强问答的层次化句子图谱

文章摘要本文提出SentGraph框架&#xff0c;一种基于句子级图谱的检索增强生成方法&#xff0c;专门用于解决多跳问答任务。通过引入修辞结构理论&#xff08;RST&#xff09;建模句子间细粒度逻辑关系&#xff0c;构建层次化句子图谱&#xff0c;实现精准的证据检索。实验表明…

吐血推荐9个一键生成论文工具,本科生搞定毕业论文!

吐血推荐9个一键生成论文工具&#xff0c;本科生搞定毕业论文&#xff01; 毕业论文难&#xff1f;AI 工具来帮你 随着人工智能技术的不断进步&#xff0c;越来越多的学生开始借助 AI 工具来完成学业任务。特别是对于本科生而言&#xff0c;撰写毕业论文是一项既耗时又复杂的…

2026年郑州GEO优化公司推荐TOP3:从技术到效果的实战选型指南

2026年郑州GEO优化公司推荐TOP3:从技术到效果的实战选型指南 在AI搜索成为流量新战场的2026年,郑州企业想挤上豆包、文心一言的“推荐榜”,选对GEO优化公司比“砸钱投流”更关键——毕竟90%的企业都栽过“贴牌工具…

【毕业设计】基于springboot的培训机构课后服务平台小程序(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【路径规划】基于RRT算法实现自主机器人进行路径规划附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…