求一个数值的整数次方,不考虑大数的问题
发布时间:2020-12-14 03:05:50 所属栏目:大数据 来源:网络整理
导读:public static double Power(double base,int exponent)? 具体实现请参考一下代码: package cn.gt.algori;/** * 数值的整数次方 不考虑大数的问题 * @author gengtao * */public class train0808_1 {private static boolean invalidInput = false;public st
public static double Power(double base,int exponent)?
具体实现请参考一下代码:
package cn.gt.algori; /** * 数值的整数次方 不考虑大数的问题 * @author gengtao * */ public class train0808_1 { private static boolean invalidInput = false; public static void main(String[] args) { // TODO Auto-generated method stub double number = 2.5; int exponent = 5; double result = Power(number,exponent); if(invalidInput == true){ System.out.println("Invalid input!"); } System.out.println(result); } //判断两个double数据是否相等 public static boolean equal(double num1,double num2){ if((num1 - num2 > -0.0000001) && (num1 - num2 < 0.0000001)){ return true; }else{ return false; } } public static double Power(double base,int exponent){ if(equal(base,0.0) && exponent < 0){ invalidInput = true; return 0.0; } int absExponent = exponent; if(exponent < 0){ absExponent = -exponent; } double result = PowWithExponent(base,absExponent); if(exponent < 0){ result = 1.0 / result; } return result; } //使用递归求解 用右移代替除运算,和1取与代替求余运算。 public static double PowWithExponent(double base,int absExponent){ if(absExponent == 0) return 1.0; if(absExponent == 1) return base; double result = PowWithExponent(base,absExponent >> 1); result *= result; if((absExponent & 1) == 1){ result *= base; } return result; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |