Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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_Algorithm_Recursion - Fatal编程技术网

阶乘方法-java递归中的逻辑错误

阶乘方法-java递归中的逻辑错误,java,algorithm,recursion,Java,Algorithm,Recursion,我已发表以下声明: 阶乘为:0 阶乘是:8 阶乘为:24 但是5的阶乘应该是120 我有以下问题: 递归在这里是如何工作的 如何解决逻辑问题 你可以在网上找到几个答案, 你的答案是错误的。事实上有一个逻辑错误=n*n-1 public static void main(String[] args) { factorial(5); } public static void factorial(int n) { int

我已发表以下声明: 阶乘为:0 阶乘是:8 阶乘为:24 但是5的阶乘应该是120 我有以下问题:

  • 递归在这里是如何工作的
  • 如何解决逻辑问题

  • 你可以在网上找到几个答案, 你的答案是错误的。事实上有一个逻辑错误=n*n-1

    public static void main(String[] args)
        {
             factorial(5);      
        }
    
        public static void factorial(int n)
        {
            int fact=n;
            if(n>0)
            {
    
            fact =n*n-1;
            n=n-2;
            factorial(n);
            System.out.println("Factorial is: "+fact);      
            }
        }
    
    int fact(int n)
    {
        int result;
    
       if(n==1)
         return 1;
    
       result = fact(n-1) * n;
       return result;
    }
    
    class Test {
    
        static int fact = 1;
        public static void main(String[] args) {
             factorial(5);      
        }
    
        public static void factorial(int n)
        {
    
            if(n>0) {
    
                fact = fact * (n);
                factorial(n-1);
            } else {
    
                System.out.println("Factorial is: "+fact);
            }
    
        }
    }