java递归:当n>;12
这是因为13!大于最大的32位整数。在java中,int总是32位。如何“出错”?你需要了解一下。特别是,您需要告诉我们您得到的错误是什么,包括输入、预期输出、实际输出、任何异常的完整堆栈跟踪等等,因为12!太大了,无法放入整数中。一个好的经验法则是,你在一个问题上投入的精力越多,答案就越好。@Tunaki-12!是479001600<代码>整数。最大值为2147483647,因此有足够的空间容纳12!。是13!(6227020800)太大了。好主意,抱歉。我的问题是当我输入12作为x时,结果是13!是1932053504。但是13!应该是6227020800。那么这个代码有什么问题?java递归:当n>;12,java,recursion,factorial,Java,Recursion,Factorial,这是因为13!大于最大的32位整数。在java中,int总是32位。如何“出错”?你需要了解一下。特别是,您需要告诉我们您得到的错误是什么,包括输入、预期输出、实际输出、任何异常的完整堆栈跟踪等等,因为12!太大了,无法放入整数中。一个好的经验法则是,你在一个问题上投入的精力越多,答案就越好。@Tunaki-12!是479001600整数。最大值为2147483647,因此有足够的空间容纳12!。是13!(6227020800)太大了。好主意,抱歉。我的问题是当我输入12作为x时,结果是13!是
import java.util.Scanner;
public class factorial {
public static void main(String [] args){
Scanner in = new Scanner(System.in);
int x = 0, y;
System.out.println("enter factorial number");
if(in.hasNextInt()){
x = in.nextInt();// check if the scanner's next token is an int
}//end if
y = factorial(x);
System.out.println("factorials is "+y);
}//end main
private static int factorial(int n) {
// TODO Auto-generated method stub
if(n==0||n==1){
return 1;
}
else
return n*factorial(n-1);//recursive call
}//end factorial
}//end class