news 2026/6/15 22:15:18

【递归算法】快速幂解决 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/6/15 13:51:36

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

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

作者头像 李华
网站建设 2026/6/15 14:55:30

费雪的管理层访谈技巧:洞察公司文化

费雪的管理层访谈技巧&#xff1a;洞察公司文化关键词&#xff1a;费雪、管理层访谈技巧、洞察、公司文化、投资分析摘要&#xff1a;本文聚焦于费雪所提出的管理层访谈技巧&#xff0c;并深入探讨如何通过这些技巧洞察公司文化。公司文化对企业的长期发展和业绩表现有着至关重…

作者头像 李华
网站建设 2026/6/15 14:10:54

冥想第一千七百七十二天(1772)

1.今天周五了&#xff0c;项目上也非常忙&#xff0c;然后下了班本来是想着昨天跑步了&#xff0c;然后但是今天昨天没有时间&#xff0c;然后今天就跑了&#xff0c;感觉最近退步了退步的还是很多的不过这也感觉很正常&#xff0c;人总会有高潮和低谷。 2.感谢感谢父母&#x…

作者头像 李华
网站建设 2026/6/15 15:12:04

22-5. PLC的程序控制指令(子程序)

22-5. PLC的程序控制指令&#xff08;子程序&#xff09;在 PLC&#xff08;可编程逻辑控制器&#xff09;编程中&#xff0c;子程序指令是一种用于结构化编程的核心指令。它的核心思想是“模块化”&#xff1a;将复杂的程序分解成若干个独立的功能块&#xff0c;按需调用。简单…

作者头像 李华
网站建设 2026/6/15 16:40:22

基于STM32的智能停车场系统设计(实物设计)

基于STM32的智能停车场系统设计摘要随着城市化进程加快与汽车保有量激增&#xff0c;传统停车场管理c效率低下、信息不透明、安全隐患突出等问题日益显著。为解决上述痛点&#xff0c;本文设计了一套基于STM32微控制器的智能停车场系统&#xff0c;实现车辆出入计数、环境参数监…

作者头像 李华