Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 爪哇语:;“缺少返回语句”;_Java_Recursion - Fatal编程技术网

Java 爪哇语:;“缺少返回语句”;

Java 爪哇语:;“缺少返回语句”;,java,recursion,Java,Recursion,我在递归方面遇到了一些问题。目前,这段代码给了我一条错误消息“缺少返回语句”。有没有办法让它按我想要的方式工作?我希望它计算xn,然后在n为零时返回“count” public class Question6p2 { public static void main(String[] args){ int n = -6; int x = 2; int count = x; power2(n, x, count);

我在递归方面遇到了一些问题。目前,这段代码给了我一条错误消息“缺少返回语句”。有没有办法让它按我想要的方式工作?我希望它计算xn,然后在n为零时返回“count”

public class Question6p2 {
    public static void main(String[] args){
        int n = -6;
        int x = 2;
        int count = x;
        power2(n, x, count);
        System.out.println(power2(n, x, count));

    }

    public static int power2(int n, int x, int count){
        if (n != 0){
            if (n>0){
                count = count * x;
                n = n - 1;
            }
            else if (n<0)  {
                count = count * -x;
                n = n + 1;
            }
            power2(n, x, count);
        }
        else if (n == 0){
            return count;
        }
    }
}
公开课问题6p2{
公共静态void main(字符串[]args){
int n=-6;
int x=2;
整数计数=x;
幂2(n,x,计数);
System.out.println(power2(n,x,count));
}
公共静态整数power2(整数n,整数x,整数计数){
如果(n!=0){
如果(n>0){
计数=计数*x;
n=n-1;
}

否则,如果(n当前,您有以下声明:

power2(n, x, count);
…完全忽略结果。在该分支中,我们从未从方法调用返回任何内容。我怀疑这两个问题是相关联的

我猜你只是想:

return power2(n, x, count);

目前,您有以下声明:

power2(n, x, count);
…完全忽略结果。在该分支中,我们从未从方法调用返回任何内容。我怀疑这两个问题是相关联的

我猜你只是想:

return power2(n, x, count);

当前,由于返回语句在if语句中,所以您将收到一个关于没有返回语句的错误,因此如果该if语句未运行,您将不会返回任何有问题的内容

此外,我认为您进行的递归是根本错误的,因为您从未递归地调用您的方法

在power方法中,您可能想要做的是接受n作为调用方法的时间数,然后在每次递归时将其降低1,然后在每次递归时将x乘以原始值

我的意思是:

 public static double power2(int n, int x,int xOriginal){
    if(n == 0){
        return 1;
    }
    if(n < 0){
        return 1 / power2(n*-1, x, x);
    }
    if(n <= 1){
        return x;
    }
    return power2(n -1, x * xOriginal, xOriginal);
}
publicstaticdoublepower2(intn,intx,intxoriginal){
如果(n==0){
返回1;
}
if(n<0){
返回1/power2(n*-1,x,x);
}

if(n当前,由于返回语句在if语句中,所以您得到一个关于没有返回语句的错误,因此如果if语句没有运行,您将不会返回任何有问题的内容

此外,我认为您进行的递归是根本错误的,因为您从未递归地调用您的方法

在power方法中,您可能想要做的是接受n作为调用方法的时间数,然后在每次递归时将其降低1,然后在每次递归时将x乘以原始值

我的意思是:

 public static double power2(int n, int x,int xOriginal){
    if(n == 0){
        return 1;
    }
    if(n < 0){
        return 1 / power2(n*-1, x, x);
    }
    if(n <= 1){
        return x;
    }
    return power2(n -1, x * xOriginal, xOriginal);
}
publicstaticdoublepower2(intn,intx,intxoriginal){
如果(n==0){
返回1;
}
if(n<0){
返回1/power2(n*-1,x,x);
}

如果(n您的算法有一些问题:

负指数是什么意思?

你应该明白x-n可以写成1/xn。这不是你的算法中所反映的

所有可能的情况

计算指数时有4种基本情况

  • 存在任何值x0=1
  • 任意x1=x
  • 任何负指数x-n=1/xn
  • 任何大于1的正指数:xn,其中n>1
当x的指数为0时,算法应返回1。当指数为1时返回x,或当n>1时递归调用算法

在n<0的特殊情况下(即有负指数),只要在调用方法之前更改n的符号,就可以简单地返回倒数1/method()

该行:

else if (n < 0){
    n = -n;
    return(1 / power2(n, x, count));
}

您的算法有一些问题:

负指数是什么意思?

你应该明白x-n可以写成1/xn。这不是你的算法中所反映的

所有可能的情况

计算指数时有4种基本情况

  • 存在任何值x0=1
  • 任意x1=x
  • 任何负指数x-n=1/xn
  • 任何大于1的正指数:xn,其中n>1
当x的指数为0时,算法应返回1。当指数为1时返回x,或当n>1时递归调用算法

在n<0的特殊情况下(即有负指数),只要在调用方法之前更改n的符号,就可以简单地返回倒数1/method()

该行:

else if (n < 0){
    n = -n;
    return(1 / power2(n, x, count));
}

n
不是零时,您需要返回一些内容。我不知道您想做什么。您想计算x pow n?(计数是多少)@AnthonyRaymond我使用count将x存储为n的幂。如果在返回
int
的方法体中,两个分支都需要返回
int
的return语句,或者需要在if语句之后返回一些内容。在
main
中,当您第一次调用时,您不需要对返回进行任何操作。您需要当
n
不为零时返回某个值。我不知道你想做什么。你想计算x pow n?(计数是多少)@AnthonyRaymond我使用count将x存储为n的幂。如果在返回
int
的方法体中,两个分支都需要一个返回
int
的return语句,或者需要在if语句之后返回一些内容。在
main
中,当您第一次调用时,您对返回不做任何操作。很好的解释感谢!非常感谢!这真的让我难堪。很好的解释!非常感谢!这真的让我难堪。