题目描述:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路:
给定一个浮点数求它的整数次方。要考虑到所有的情况,关于指数,如果是0,则结果是1;
指数是1,结果是base;指数是-1,结果是1.0/base。
我们在计算一个数的多次幂时,可以先判断其幂次的奇偶性,然后:
-
如果幂次为偶直接 base(底数) 作平方,power(幂次) 除以2。
-
如果幂次为奇则底数平方,幂次整除于2然后再多乘一次底数。
代码实现:
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));}}
测试结果: