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;
    		}
    	}
    
  • 相关阅读:
    轨迹预测-运动递归函数
    Mandelbrot集合及其渲染
    如何检测一个圆在多个圆内?
    【转】三十分钟掌握STL
    【转】如何理解c和c++的复杂类型声明
    有1,2,3一直到n的无序数组,排序
    归并排序
    希尔排序
    快速排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/czjk/p/11611310.html
Copyright © 2011-2022 走看看