题目描述:
给定一个 double类型的浮点数 base和 int类型的整数 exponent,求 base的 exponent次方。
解题思路:
递归求解
剑指offer答案:
- public class Solution {
- public double Power(double base, int exponent) {
- if(exponent>0){
- double result = Power(base*base,exponent/2);
- if(exponent%2 != 0)
- result = result*base;
- return result;
- }else if(exponent<0){
- exponent = -exponent;
- double result = Power(base * base,exponent/2);
- if((-exponent%2) != 0)
- result = result * (base);
- return 1.0/result;
- }else if(exponent==0){
- return 1;
- }else{
- return base;
- }
- }
- }
本地运行:
- import java.util.Scanner;
- public class DoublePowInt {
- /**
- * ycy
- * 题目描述:
- * 给定一个 double类型的浮点数 base和 int类型的整数 exponent,求 base的 exponent次方。
- * 解题思路:
- * 递归求解
- */
- public static double doublePowInt(double data,int pow){
- if(pow==1) return data;
- if(pow==0) return 1;
- double result = doublePowInt(data*data, pow/2); //递归完成求解
- if(pow%2 != 0)
- result = data*result;
- return result;
- }
- public static void main(String[] args) {
- //Scanner scan = new Scanner(System.in);
- //int pow = scan.nextInt();
- //double data = scan.nextDouble();
- int pow1=5;double data1=0.5;
- double result1 = doublePowInt(data1,pow1);
- System.out.println("结果是 "+result1);
- double result2 = Math.pow(data1, pow1);
- System.out.println("结果是 "+result2);
- }
- }