提问者:小点点

阶乘 - 未解析的编译,必须返回 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)

共3个答案

匿名用户

你的道路并不都被回报所覆盖;

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

匿名用户

很简单:所有路径都需要返回。在 while 循环之后,您没有返回。

这就是全部内容。

匿名用户

public int factorial(int n) {
    if(n <= 1) {
        return 1;
    }
    return n * factorial(n - 1);
}