本文共 773 字,大约阅读时间需要 2 分钟。
实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
示例 1:
输入: 2.00000, 10 输出: 1024.00000
示例 2:
输入: 2.10000, 3 输出: 9.26100
示例 3:
输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25
解题思路:快速幂的思路
非递归方式实现
// 快速幂 public double myPow(double x,int n) { long power = n; if(power<0) { x = 1/x; power = (-1)*power; } // 结果 double res = 1; // 快速幂 while(power!=0) { if(power%2==1) { res *= x; } power = power/2; x = x*x; } return res; }
递归方式实现
// 递归 public double myPow_2(double x,int n) { if(n==0) { return 1; } if(n==1) { return x; } if(n==-1) { return 1/x; } double half = myPow_2(x, n/2); double mod = myPow_2(x, n%2); return half*half*mod; }
转载地址:http://czwdf.baihongyu.com/