题目描述:
给定一个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));
}
}
测试结果: