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

LeetCode Pow(x, n)

问题描述:

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn)。

示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000

示例 2:
输入:x = 2.10000, n = 3
输出:9.26100

示例 3:
输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25

解题思路

分治的办法,将xn次方划分为x(n/2) * x(n/2),每次划分一半下去。直到n === 1,这之间的过程我们可以用递归进行实现,而边境的判断条件就是当n===0时。
时间复杂度分析,因为我们每次都是xn/2* xn/4 * xn/8* … * 1;
所以时间复杂度为o(log n);

var myPow = function(x, n) {if (n === 0){return 1}if (n < 0){return 1 / myPow(x, -n)}if (n % 2){return x * myPow(x , n - 1);}return myPow(x * x, n / 2);
};

代码分析:

1、函数定义:

var myPow = function(x, n) {

定义了一个函数 myPow,接收两个参数:x(底数,可以是小数),n(指数,可以是正数或负数)。

2、处理指数为零的特殊情况:

if (n === 0){return 1
}

当指数 n 为 0 时,根据幂的定义,任何非零数的 0 次幂都等于 1。

3、处理负指数:

if (n < 0){return 1 / myPow(x, -n)
}

当指数 n 为负数时,可以通过计算 x 的正指数次幂然后取其倒数来得到结果。这是一个有效的方法,因为 x-n 次幂等于 1 / xn

4、递归终止条件:
如果 n 是正数且不为 0,函数将进入递归计算。

5、处理奇数指数:

if (n % 2){return x * myPow(x , n - 1);
}

当指数 n 是奇数时,可以通过计算 xn - 1 次幂,然后与 x 相乘得到 xn 次幂。

6、递归计算:
如果 n 是偶数,函数将 x 与自身相乘(x * x),并将指数 n 除以 2,然后递归调用 myPow

7、递归公式:

  • return myPow(x * x, n / 2);
  • 这个公式利用了分治策略,将问题规模减半,直到指数变为 0。

8、递归基础案例:
当指数 n 变为 0 时,递归将终止,并开始返回计算结果。

9、返回结果:
函数最终返回 xn 次幂的结果。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HTTP的场景实践
  • 学习嵌入式的第十六天----结构体 共用体
  • C# winform 三层架构增删改查,(删除篇)
  • Python面试宝典第32题:课程表
  • cmake+ninja交叉编译android下的静态库
  • Elasticsearch 基本搜索
  • AI大模型开发——2.深度学习基础(1)
  • HCIP第七章(BGP拓展知识)
  • HCIP第六章(BGP)
  • 【Linux学习】动静态库从原理到制作
  • 【Java数据结构】---List(ArrayList)
  • STM32的USB接口介绍
  • vue前端自适应布局,一步到位所有自适应
  • 【vulnhub】WebDeveloper:1靶机
  • Linux下如何使用Netcat进行网络调试
  • 自己简单写的 事件订阅机制
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • CSS相对定位
  • golang中接口赋值与方法集
  • HTTP中的ETag在移动客户端的应用
  • IOS评论框不贴底(ios12新bug)
  • python3 使用 asyncio 代替线程
  • Selenium实战教程系列(二)---元素定位
  • vuex 笔记整理
  • vue中实现单选
  • windows下mongoDB的环境配置
  • 关于 Cirru Editor 存储格式
  • 聊聊flink的TableFactory
  • 那些年我们用过的显示性能指标
  • 人脸识别最新开发经验demo
  • 我的zsh配置, 2019最新方案
  • 协程
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 优化 Vue 项目编译文件大小
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • ionic入门之数据绑定显示-1
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​用户画像从0到100的构建思路
  • ![CDATA[ ]] 是什么东东
  • # Maven错误Error executing Maven
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • #在 README.md 中生成项目目录结构
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (翻译)terry crowley: 写给程序员
  • (附源码)node.js知识分享网站 毕业设计 202038
  • .CSS-hover 的解释
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET IoC 容器(三)Autofac
  • .Net IOC框架入门之一 Unity
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET精简框架的“无法找到资源程序集”异常释疑