尝试创建一个递归方法,将一个double值提升为
java课程的int权限.指令说“但是,编写代码,以便当n为偶数时,方法将返回(x ^(n / 2))^ 2.”
这是我到目前为止:
public static double powerFaster(double x,int n) { if (n == 0) { return 1; } else if ((n % 2) == 0) { return ((x ^ (n / 2.0) ^ 2.0)); //Error occurs here. } else { return x * powerFaster(x,(n - 1)); } }
解决方法
^是XOR运算符,而不是幂.使用Math.pow()获取电源.
也就是说,我认为你错过了练习的重点.
你应该返回powerFaster(x,n / 2)* powerFaster(x,n / 2);当n是偶数时(实际上进行一次递归调用,将其结果存储在变量中并将其自身相乘).
public static double powerFaster(double x,int n) { if (n == 0) { return 1; } else if ((n % 2) == 0) { double pow = powerFaster(x,n/2); return pow * pow; } else { return x * powerFaster(x,(n - 1)); } }