《剑指offer》数学第一题:数值的整数次方

题目描述:

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

 思路:

        给定一个浮点数求它的整数次方。要考虑到所有的情况,关于指数,如果是0,则结果是1;

指数是1,结果是base;指数是-1,结果是1.0/base。

        我们在计算一个数的多次幂时,可以先判断其幂次的奇偶性,然后:

  • 如果幂次为偶直接 base(底数) 作平方,power(幂次) 除以2。

  • 如果幂次为奇则底数平方,幂次整除于2然后再多乘一次底数。

 《剑指offer》数学第一题:数值的整数次方_第1张图片

 代码实现:

package 数学;

import java.util.Scanner;

public class Math1 {

    public double solution(double base,int exponent)
    {
        if(exponent==0)
            return 1;
        if(exponent==1)
            return base;
        if(exponent==-1)
            return 1.0/base;
        double h=Math.pow(base,exponent/2);
        return h*h*solution(base,exponent%2);
    }

    public static void main(String[] args) {
        Math1 m=new Math1();

        Scanner sc=new Scanner(System.in);
        double base=sc.nextDouble();
        int exponent=sc.nextInt();

        System.out.println(m.solution(base,exponent));
    }
   
}

测试结果:

《剑指offer》数学第一题:数值的整数次方_第2张图片

《剑指offer》数学第一题:数值的整数次方_第3张图片

你可能感兴趣的:(算法,java,数据结构)