我想使用for循环在Java中执行阶乘程序。例如,我想接受用户输入,说10
,然后相乘10*9*8*7*6*5*4*3*2*1
。我需要构建for
循环的帮助。到目前为止,我不知道去哪里。
import java.util.Scanner;
import java.lang.Math;
public class factorial {
public static void main(String[] args) {
int num;
Scanner input = new Scanner(System.in);
System.out.println("Enter a number: ");
num = input.nextInt();
}
}
尝试
public static void main(String[] args) {
int num;
int fact=1;
Scanner input = new Scanner(System.in);
System.out.println("Enter a number: ");
num = input.nextInt();
for (int i=2;i<=num; i++){
fact=fact*i;
}
System.out.println("Factorial: "+fact);
}
正如@Marko Topolnik在评论中提到的那样,该代码将适用于输入最多12的输入。对于较大的输入,由于溢出将输出无穷大。
对于大于12的数字,您应使用更高的数据类型,例如 BigInteger
你可以试试:
public static void main(String[] args) {
BigInteger num;
BigInteger fact = BigInteger.valueOf(1);
Scanner input = new Scanner(System.in);
System.out.println("Enter a number: ");
num = input.nextBigInteger();
for (int i = 2; i <= num; i++){
fact = fact.multiply(BigInteger.valueOf(i));
}
System.out.println(fact);
}
计算一个数字的阶乘。 使用递归。如果 n 小于或等于 1 ,则返回 1 。否则返回 n 和 n - 1 的阶乘。如果 n 是负数,则会引发异常。 const factorial = n => n < 0 ? (() => { throw new TypeError('Negative numbers are not allowed!'); })()
有人能帮助我的java阶乘赋值吗?我认为我做得对,但我不确定。我需要让用户输入一个数字,然后计算输入数字的阶乘。就像人输入10一样,用户会将此视为输出:0! = 1, 1! = 1, 2! = 2, 3! = 6, 4! = 24, 5! = 120, 6! = 720, 7! = 5040, 8! = 40320, 9! = 362880
问题内容: 我尝试使用for循环和double数据类型以典型方式找到大量的阶乘,例如8785856。 但是结果显示无限大,可能是因为它超出了其极限。 因此,请引导我找到大量乘数的方法。 我的代码: 输出:- 我是Java的新手,但已经学习了IO处理的所有概念。 问题答案:
问题内容: 这两种获取阶乘(循环与递归)的方法中哪种更有效/更快?如果可以改进,那又如何呢? 语言:Java 问题答案: 因为没有方法调用的开销,所以for循环将更加有效。(作为一般规则,循环几乎总是比递归更有效率) 为了解释为什么您必须深入了解调用方法和调用堆栈时发生的事情。 基本上,当您调用一个方法时,它需要一些空间来使用(例如其局部变量之类的东西),它还需要空间以用于将传入的参数传递给它,并
我如何使程序执行一个新的或重复的操作,或要求用户再次输入一个数字,并知道它的阶乘。
我刚刚开始编写Haskell,基本上是因为我在寻找一种比C#更强大的数学语言,现在我很困惑。 现在我只想找到4的阶乘,然后打印出来,这是我到目前为止写的: 当我试着调试它时,我得到了 错误:(3,8)ghc:无法匹配预期类型