我必须创建一个递归方法,它接受一个双x和int n,并返回x ^ n。最初我将会有类似的东西
public static double power(double x, int n){
if(n < 1){
return 1;
}else{
double total = x;
for(int i = 0; i < n-1; i++){
total = x*x;
power(total,x);
}
}
但在问题中它说“这个操作的递归定义是x ^ n = x·x ^ n-1。”我是Java的新手,这种方式似乎不会递归,因为我只是做x * x ^ n-1。我对Java很陌生,所以也许我只是感到困惑,但我只是在寻找一些关于如何与递归方法相关的澄清。
答案 0 :(得分:0)
这是我能找到的最简单方法:
public static double power(double x, int n){
if(n < 1){
return 1;
}else{
return x * power(x, n-1);
}
}
答案 1 :(得分:0)
这是一个解决方案:
public static double power(double x, double n){
if(n <= 1)
return x;
return x*power(x,n-1);
}
通过使用 for循环,您无法递归地解决问题。 以下是如何使用 for循环和递归方法执行相同操作的示例:
for(int i = 0;i<10;i++) //for loop
{
System.out.print(i);
}
public void print(int i) // recursive, call this method like so: print(0);
{
if(i<10)
{
System.out.println(i);
print(++i);
}
}
这两种技术都会打印出相同的结果:
0 1 2 3 4 五 6 7 8 9