阶乘 - 未解决的编译,必须 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 的回答。
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 的回答。