-3
X^N =(X^N/2)^ 2如果n> 0并且n为偶数在math.pow使用递归计算在Java功率
X^N = X *(X^N/2)^ 2如果n> 0且n是奇数
有人可以给我这两个公式的java代码吗?我试图用它做,但我的答案永远是无限的。
这是我的代码
代码:
import java.lang.*;
public class power4
{
double ans;
public double setpower(double x, double n) {
if (n == 0)
return 1;
else if (n % 2 == 0)
return Math.pow(setpower(x, n/2),2);
else
return x * (Math.pow(setpower(x, n/2),2));
}
}
驱动程序类:
public class powerTester
{
public static void main(String[] args) {
power4 test4 = new power4();
System.out.print("2^0 -- ");
System.out.print(test4.setpower(2,0)+" ");
System.out.println();
System.out.print("2^1 -- ");
System.out.print(test4.setpower(2,1)+" ");
System.out.println();
System.out.print("2^2 -- ");
System.out.print(test4.setpower(2,2)+" ");
System.out.println();
System.out.print("2^3 -- ");
System.out.print(test4.setpower(2,3)+" ");
System.out.println();
System.out.print("2^4 -- ");
System.out.print(test4.setpower(2,4)+" ");
System.out.println();
System.out.print("2^5 -- ");
System.out.print(test4.setpower(2,5)+" ");
}
}
输出:
Welcome to DrJava. Working directory is C:\Users\Nisarg\Desktop
> run powerTester
2^0 -- 1.0
2^1 -- Infinity
2^2 -- Infinity
2^3 -- Infinity
2^4 -- Infinity
2^5 -- Infinity >
我想你想'n'是一个整数。但是,如果你使用'Math.pow',为什么不用它来得到你的答案? – Teepeemm 2015-03-30 21:30:11
@HovercraftFullOfEels这不是一个真正的“给我代码”的问题,这是“这是我所尝试过的,我做错了什么”的问题。它是完整的,可验证的,并指定预期的和实际的输出。所以我认为它不值得接受投票。但是,我也通过在评论中提供答案来破坏规则。 – 2015-03-30 21:40:13
@DavidWallace:够公平的。关闭投票/向下投票。 – 2015-03-30 21:41:42