Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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_Factorial - Fatal编程技术网

Java中递归阶乘函数中负整数的处理

Java中递归阶乘函数中负整数的处理,java,recursion,factorial,Java,Recursion,Factorial,我已经用Java编写了递归阶乘函数。该程序工作正常,但如果给定的整数输入为负数,我希望函数显示一条消息,并立即退出自身,而不是递归调用自身 这怎么可能呢?阶乘运算仅定义为非负整数。Java处理此问题的方法是简单地在负输入上抛出一个IllegalArgumentException: public static int factorial (int n) { if (n < 0) { throw new IllegalArgumentException ("n must

我已经用Java编写了递归阶乘函数。该程序工作正常,但如果给定的整数输入为负数,我希望函数显示一条消息,并立即退出自身,而不是递归调用自身


这怎么可能呢?

阶乘运算仅定义为非负整数。Java处理此问题的方法是简单地在负输入上抛出一个
IllegalArgumentException

public static int factorial (int n) {
    if (n < 0) {
        throw new IllegalArgumentException ("n must be non-negative");
    }
    if (n == 0) {
        return 1;
    }
    return n * factorial (n - 1);
}
公共静态整数阶乘(int n){
if(n<0){
抛出新的IllegalArgumentException(“n必须为非负”);
}
如果(n==0){
返回1;
}
返回n*阶乘(n-1);
}

阶乘运算仅为非负整数定义。Java处理此问题的方法是简单地在负输入上抛出一个
IllegalArgumentException

public static int factorial (int n) {
    if (n < 0) {
        throw new IllegalArgumentException ("n must be non-negative");
    }
    if (n == 0) {
        return 1;
    }
    return n * factorial (n - 1);
}
公共静态整数阶乘(int n){
if(n<0){
抛出新的IllegalArgumentException(“n必须为非负”);
}
如果(n==0){
返回1;
}
返回n*阶乘(n-1);
}

在调用递归方法之前,可以使用以下代码段-

if(inputNumber<0){
  break;
}else{
  findFactorial(inputNumber);//recursive method call to find factorial
}

if(inputNumber在调用递归方法之前,可以使用以下代码段-

if(inputNumber<0){
  break;
}else{
  findFactorial(inputNumber);//recursive method call to find factorial
}

if(inputNumberif查找负数返回函数

if(n < 0) {
   return;
} else {
   findFactorial(n);//recursive method call 
}
if(n<0){
回来
}否则{
FindFactory(n);//递归方法调用
}

如果查找负数返回函数

if(n < 0) {
   return;
} else {
   findFactorial(n);//recursive method call 
}
if(n<0){
回来
}否则{
FindFactory(n);//递归方法调用
}

请添加您的代码,以便我们能够更好地了解在何处进行更改请添加您的代码,以便我们能够更好地了解在何处进行更改您不必回答网站上现在发布的关于java的所有问题:)+1.Nah,我将这一点告诉Jon Skeet:-)我很幸运,Skeet先生似乎与我的时区没有太多重叠:)你现在不必回答网站上发布的关于java的所有问题:)+1.不,我会告诉Jon Skeet:-)幸运的是,Skeet先生似乎与我的时区没有太多重叠:)我没有从递归中冲泡出来。它只是在初始调用(可能来自main方法)递归方法
findFactorial()
之前的一个检查。我不是在从递归中酝酿。它只是在初始调用(可能来自main方法)递归方法
findFactorial()
之前进行检查。