zoukankan      html  css  js  c++  java
  • 《剑指offer》面试题11 数值的整数次方 Java版

    书中方法:这道题要注意底数为0的情况。double类型的相等判断。乘方的递归算法。

    	public double power(double base, int exponent){
    		//指数为0
          	 if(exponent == 0){
    			return 1.0;
    		}
          	//底数为0
    		if(isEqual(base, 0.0)){
    			return 0.0;
    		}
    		
    		int absExponent = exponent;
    		if(exponent < 0)absExponent = -absExponent;
    		
    		double result = unsignedPower(base, absExponent);
    		
    		if(exponent<0){
    			result = 1.0/result;
    		}
    		
    		return result;
    	}
    	//求乘方正常思路
    	private double unsignedPower(double base, int absExponent){
    		double result = 1.0;
    		for(int i=1; i<=absExponent; i++){
    			result *= base;
    		}
    		return result;
    	}
    	//用递归的方法求乘方
    	private double unsignedPower2(double base, int absExponent){
    		if(absExponent == 1)return base;
    		double result = unsignedPower2(base, absExponent>>1);
    		result *= result;
    		if((absExponent & 0x01) == 1){
    			result *= base;
    		}
    		return result;
    	}
    	//double类型判断相等
    	private boolean isEqual(double num1, double num2){
    		if((num1 - num2)>-0.0000001 && (num1 - num2)<0.0000001){
    			return true;
    		}else{
    			return false;
    		}
    	}
    
  • 相关阅读:
    Linux目录操作
    图形库
    Mybatis两表连接(一对一)
    ssm图片上传到数据库
    ajax函数实例
    html、css基础
    HDU 1213 How Many Tables
    HTML5简介
    在script中创建标签的三种方式
    html css js jq问题总结
  • 原文地址:https://www.cnblogs.com/czjk/p/11611310.html
Copyright © 2011-2022 走看看