阶乘 - 未解决的编译,必须 return 类型为 int 的结果

Factorial - unresolved compilation, must return a result of type int

import java.util.Scanner;

public class Factorial
{
    public int factorial(int n)
    {   if(n==1)
        {   
        return 1;
        }

        while(n>1)
        {
            return(n*factorial(n-1));
        }

    }

    public static void main(String[] args)
    {   int fact=1;
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter Number:");
        int n=sc.nextInt();

        Factorial f=new Factorial();
        fact=f.factorial(n);
        System.out.println("Factorial is:"+fact);

    }
}

//输出:

Enter Number:
4
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    This method must return a result of type int

    at Factorial.factorial(Factorial.java:5)
    at Factorial.main(Factorial.java:23)

简单:所有路径都需要return。在 while 循环之后没有 return。

仅此而已。

return;

并未涵盖您的所有路径
while(n>1)
{
    return(n*factorial(n-1));
}
return 1; // Add this
public int factorial(int n) {
    if(n <= 1) {
        return 1;
    }
    return n * factorial(n - 1);
}

正在回答您的问题 while (n > 1) 技术上应该是 return 命令。

这就是编译错误的原因。但是您可以简化代码,减少不必要的 while(...) 操作。看看 Hemant Patel 的回答。