编写一个计算x的n次方的递归方法power(x,n),x是一个浮点数,n是一个非负整数。
〔提示:power(x,n)可定义成2个等式:power(x,0)=1.0;n>=1时,power(x,n)=x*power(x,n-1)。)就是这个程序。
谢谢
〔提示:power(x,n)可定义成2个等式:power(x,0)=1.0;n>=1时,power(x,n)=x*power(x,n-1)。)就是这个程序。
谢谢
{
public static void main(String [] args)
{
System.out.println(power(2,4));
}
float power(float x,int n)
{
if(n==0)
{
return 1;
}else
{
return x*power(x,n-1);
}
}
}
编写一个改进后的power(x,n),它运行时会把n划分成2等分,若奇数时,会再乘以x。
public static void main(String[] args) {
double d=AAAA.power(3,3);
System.out.print(d); } static double power(double x,int n){
if (n<0) System.out.print("n< 0 不考虑");
if(n==0) return 1.0;
else if(n==1) return x;
else return power(x,n-1)*x ;
}
}
static double power(double x,int i){
if(i==0)
return 1;
else
return x*power(x,i-1);
}
public static void main(String[] aaa){
System.out.println(power(2,3));
}
}
float power(float x, int n)
{
if(n<=0)
return 1;
return x*power(x,n-1);
}
是吧
if (n<0) {
System.out.println("n< 0 不考虑");
return 0.0/0.0;
}
else if(n==0) return 1.0;
else if(n==1) return x;
else {
int half = n/2;
double d = power(x,half) ;
return (n%2==0)? d*d : d*d*x;
}
}
(n<0) 时,没有一个return的话,存在陷入无限循环的bug。
〔提示:使用>>运算,比如x^11 = x^8 *x^2 *x)
{
public static void main(String[] args)
{
System.out.println(power(2,5));
}
public double power(double x,int n)
{
if(n==0)
return 1.0;
else if(n>0)
return power(x,n-1)*x;
else if(n<0)
return 1/power(x,-n);
}
}