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

快速幂(迭代和递归)

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

解法一:迭代

可以得出结论,我们需要在循环的过程中找到哪些额外贡献了x的地方,根据这个位置到结果的位置的次数进行平方,然后将结果累乘即可得出答案

class Solution {public double myPow(double x, int N) {//将N转变成long形,否则int类型的最小值转变成正数的时候会溢出long n=N;return n<0? 1/pow(x,-n):pow(x,n);}public double pow(double x,long n) {double ret=1.0;//对n进行拆分 while(n>0) {//末位是否为1,判断是否贡献了xif((n&1)==1) {ret*=x;}//x往左推的时候要x要不断平方x*=x;//n除以2n>>=1;}return ret;}
}

解法二:递归

class Solution {public double myPow(double x, int n) {return n<0? 1/pow(x,-n):pow(x,n);}public double pow(double x,int n) {if(n==0) return 1;//求出x的n/2次方double tmp=pow(x,n/2);return n%2==0?tmp*tmp:tmp*tmp*x;}
}

相关文章:

  • 任意类加载环境下注入内存马
  • Unity优化篇之DrawCall
  • Vue.js 生命周期全面解析
  • 宁乡地-气-碳-水相互作用综合观测数据集
  • 香港科技大学(广州) | 生命科学与生物医学工程学域博士夏令营报名召集!
  • 基于JWT+SpringSecurity整合一个单点认证授权机制
  • 在UI界面内修改了对象名,在#include “ui_mainwindow.h“没更新
  • 探索Python融合地学:斗之气三段
  • 深度解构Vue3响应式内核:Proxy魔法与依赖追踪的极致艺术
  • 1.4 编译库:静态库、动态库
  • Java并发容器和原子类
  • caliper中的测试文件写法及其注意事项
  • 谷歌云代理商 | 游戏行业专属方案:谷歌云实时多人游戏服务器架构
  • 在Windows下利用LoongArch-toolchain交叉编译Qt
  • C++编程——关于比较器的使用
  • 五子棋网络对战游戏的设计与实现设计与实现【源码+文档】
  • 常见工具导出DDL语句
  • 图片切割工具:智能分割长图并控制文件大小
  • 三维GIS开发cesium智慧地铁教程(4)城市白模加载与样式控制
  • 数据任务调度解决离不开离线开发BatchWorks
  • 鞍山公司网站建设/公司网站建设需要注意什么
  • 微信网站怎么做/帮收款的接单平台
  • 游戏是怎么开发出来的/seo关键词排名优化报价
  • 2015年做那个网站能致富/免费推广网站推荐
  • 军人可以做网站吗/无忧软文网
  • 西安网站制作工作室/网站制作工具