50. Pow(x, n)
来源:互联网 发布:域名续费期限 编辑:程序博客网 时间:2024/06/06 05:31
Implement pow(x, n).
题目求x的n次方,n可以为正、负、零。
最简单的思路,递归或者循环,把x的n次方化为x*(x的n-1次方),然后依次计算下去直至n为0.
但是这样做显然不是一种高效率的方法,因为需要递归n次,当n比较大时可能出现栈溢出、超时等情况
我们优化一下减少递归次数,当n为偶数时,把x的n次方化为(x*x)的n/2次方,当n为奇数时,把x的n次方化为x*((x*x)的n/2次方),这样一来,次方每次都减少一半,总共需要递归logn次,递归次数大大减少了,下面是代码:
public class Solution { public double myPow(double x, int n) { return myPow(x,(long)n); } public double myPow(double x, long n){ //重载一个myPow()方法,用以规避当n=Integer.MIN_VALUE时,
// n=-n出现溢出的情况
if(n == 0) return 1; if(n < 0){ n = -n; x = 1/x; } return n%2==0 ? myPow(x*x,n/2) : x*myPow(x*x,n/2); } }
阅读全文
0 0
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50.Pow(x,n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- Struts2基于注解的Action配置
- 修改jdk环境变量后,java版本不变 java -version
- jpush-react-native 插件的集成与使用 Android 篇(推送)
- angular2--笔记--表单创建
- HTTP同源策略
- 50. Pow(x, n)
- UVa 12195
- MD5加密
- [高层建筑资料] 【结构精品案例】全球第八381m超高层—南京紫峰大厦工程技术解析
- spring之jdbc的DataSource的设置
- nginx+tomcat报504超时错误
- 编程常见报错原因对照表
- Launcher简单学习(一)布局基础与常用类的认识
- H3C 与Azure进行连接VPN连接的命令!