面试遇到了一个问题,是自己实现一个pow(x,n)函数返回一个值,是x的n次幂,回想当时回答的不好,就是死板的直接while 一直乘下去,面试官始不太满意,我想也是,这也太简单了,可是当时死活也想不出怎么优化,刚一出门,想到了一个降低计算次数的方法

比如,4的11次方,我们可以看做是4的5次方 乘以 4的五次方 乘以 4

这样问题就化简为2种情况

指数为单数时,结果= x的n/2次方 * x的n/2次方 * x;

指数为双数时,结果=x的n/2次方 * x的n/2次方

这样循环累乘的次数缩小了一半

以下是我自己写的实现:

public double myPow(double x, int n) {

if(n < 0){

x = 1/x;

n = -n;

}else if( n == 0){

return 1;

}

int r1 = n/2;

boolean isDouble = n % 2 == 0;

double result = 1;

while(r1 > 0){

result *= x;

r1 --;

}

return isDouble? result*result:result*result*x;

}

java语言不用pow函数求x的n次方_【算法】自己实现x的n次幂(pow函数)相关推荐

  1. java语言不用担心内存吗_不用担心智能手机的电池,只需使用它

    java语言不用担心内存吗 When you're trying to get the most life out of your device, it's easy to overthink bat ...

  2. Java 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n

    Java 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+-+1/n,当输入n为奇数时,调用函数1/1+1/3+-+1/n public class Test {public void ...

  3. Java编程语言学习:Java语言基础案例(如求两门课分数之差、三门课平均分、关系运算符作比较)之详细攻略

    Java编程语言学习:Java语言基础案例(如求两门课分数之差.三门课平均分.关系运算符作比较)之详细攻略 目录 Java语言基础案例 1.求两门课分数之差.三门课平均分: 2.关系运算符作比较

  4. 用Java语言进行简单的求1-100之间的求偶和,并把求和结果在控制台输出

    ##用Java语言进行简单的求1-100之间的求偶和,并把求和结果在控制台输出 话不多说直接上代码 在这里插入代码片 //求1-100之间的求偶和,并把求和结果在控制台输出 public class ...

  5. c语言学习-编写函数求x的n次方的值

    编写函数求x的n次方的值 程序流程图: 代码: #include<stdio.h> long mul(int j ,int k) {int i; long mu=1; for(i=0;i& ...

  6. Python练习题——第九题:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n

    Python练习题第九题 题目: 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+-+1/n,当输入n为奇数时,调用函数1/1+1/3+-+1/n #2019/12/26/18:16def f ...

  7. java语言不用pow函数求x的n次方_X的N次方求解——pow(x,n)实现

    最近看到这样的一个题目求X的N次方,自己想了一些解决办法,记录一下留作日后参考. 求X的N次方,首先暴力求解: int exp(int x, int n) { int ret = 1; for(int ...

  8. c语言 指数 2 n,c语言中指数函数中求2的N次方输出2^n中n为常数

    求C语言 编写程序 1的1次方加2的2次方加3的3次方--一直加到n的n次方. 程序如下:#include#includevoidmain(){inti,n,sum=0;scanf("%d& ...

  9. java语言的数组描述_下列关于Java语言的数组描述中,错误的是()。_学小易找答案...

    [单选题]下面()是正确的main()方法说明. [填空题]Java规定,如果子类中定义的成员方法与父类中定义的成员方法同名,并且参数的( )和类型以及( )的类型也相同,则父类中的同名成员方法被屏蔽 ...

最新文章

  1. 2018-2-28 Linux学习笔记
  2. 做了5年Java,java读写锁使用
  3. Spring @Resource、@Autowired、@Qualifier区别
  4. 低能量社交时代,我们都成了小心翼翼的「舔狗」
  5. 【转载】Android设计中的.9.png
  6. python requests 代理超时_python requests 超时与重试
  7. PHP之cookie免登录
  8. js将秒转化成时间格式
  9. 发布量子加密手机,浓眉大眼的三星也开始技术碰瓷了?
  10. 分屏 投影显示 PPT
  11. 如何在免费的第三方服务器上运维微信公众号
  12. GAN介绍 - 提示与技巧
  13. 论文笔记:Auto-Encoding Scene Graphs for Image Captioning
  14. vim编辑器替换以及全局替换
  15. 34岁本科男,做了5年功能测试想转行,除了进厂还能干什么?
  16. 大数据优化服务 黑科技创造价值 智慧旅游来势猛
  17. 为了得到一个数的“相反数“,我们将这个数的数字顺序颠倒,然后再加上原先的数得到“相反数“。
  18. Qt在线帮助文档网址以及安装包下载地址
  19. 手动Docker部署saber
  20. 不要再这样做shopee虾皮跨境电商,不然有苦说不出

热门文章

  1. PMP报名需要准备什么材料?帮你整理清楚
  2. c语言编写猜数字游戏
  3. 浅谈房地产管理系统的有利于销售的功能
  4. AcWing 751. 数组的左方区域
  5. 微型计算机键盘上的shift键 汉语译为,PC计算机键盘上的Shift键称为什么键
  6. 南瓜科学好奇盒子上新 打造新时代玩具总动员
  7. JGJT98-2010 砌筑砂浆配合比设计规程 免费下载
  8. 我人生买的第一个无人机,坠机了!
  9. 什么软件可以图片转文字?这几个软件值得收藏
  10. 第五届“传智杯”全国大学生计算机大赛(练习赛)传智杯 #5 练习赛] 平等的交易