news 2026/4/1 16:59:42

【递归算法】快速幂解决 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/3/27 12:46:49

提示系统高可用架构:负载均衡策略的多活部署

让AI提示服务永不宕机&#xff1a;负载均衡与多活部署的架构方法论 关键词 提示系统 | 高可用架构 | 负载均衡策略 | 多活部署 | 分布式服务 | 故障转移 | 流量调度 摘要 当你用AI写作平台生成文案时&#xff0c;若接口突然报错&#xff1b;当你用智能客服咨询问题时&#xff0…

作者头像 李华
网站建设 2026/3/27 16:42:58

Python中的Mixin继承:灵活组合功能的强大模式

Python中的Mixin继承&#xff1a;灵活组合功能的强大模式 1. 什么是Mixin继承&#xff1f;2. Mixin与传统继承的区别3. Python中实现Mixin的最佳实践3.1 命名约定3.2 避免状态初始化3.3 功能单一性 4. 实际应用案例4.1 Django中的Mixin应用4.2 DRF (Django REST Framework)中的…

作者头像 李华
网站建设 2026/3/31 20:12:01

2. Ollama REST API - api/generate 接口详

Ollama 服务启动后会提供一系列原生 REST API 端点。通过这些Endpoints可以在代码环境下与ollama启动的大模型进行交互、管理模型和获取相关信息。其中两个endpoint 是最重要的&#xff0c;分别是&#xff1a;POST /api/generatePOST /api/chat其他端点情况&#xff1a;POST /a…

作者头像 李华
网站建设 2026/3/26 17:08:24

【读书笔记】《跑外卖》

《跑外卖&#xff1a;一个女骑手的世界》读书笔记 一、作者背景与写作缘起 1.1 作者简介 姓名&#xff1a;王婉&#xff08;婉婉&#xff09;出生地&#xff1a;山东某县城童年记忆&#xff1a;北京庙的传说——据说站在庙上能望见北京城&#xff0c;但她多次尝试从未看到过…

作者头像 李华
网站建设 2026/3/15 14:18:32

Agentic AI:从技术架构到商业落地:构建自主、协作、可信的下一代智能系统

Agentic AI:从技术架构到商业落地:构建自主、协作、可信的下一代智能系统 作者:光子AI 出版社:AI智能体时代虚拟出版社 创作时间:2026-01-18 前言 当ChatGPT以惊人的自然语言理解能力掀起生成式AI风暴时,整个行业都在欢呼一个新时代的到来。然而,作为这场变革的深度参与…

作者头像 李华