使用while循环获取Java factorial程序,以便在用户输入“y”并使factorial部分工作时继续重复

问题描述 投票:1回答:1

我是编程的新手,我正在试图弄清楚如何让java程序正确运行一个阶乘,并询问用户是否要继续并输入另一个数字来使用并显示该阶段的阶乘。当用户输入“y”时,程序应该要求另一个号码。如果他们选择“n”,程序应该终止。我已经在这个代码上工作了一天,仍然没有弄清楚我在代码中出错的地方,以便在循环时正确地解决因子。有人可以帮帮我吗?

	int i = 0;
	int factorial = 1;
	int input;
	char ind = 'y';

	     
 while (ind == 'y') {
     	System.out.println("Please enter in a number to determine it's factorial: ");
 	input = scan.nextInt();
 		scan.nextLine();
if  ( i<= input) {
	i=input;
			i++;
	 factorial = factorial * i;
	 System.out.println(" the factorial of: " + input + " is " + factorial);
}System.out.println(" Do you want to continue? (y/n) :");
	ind = scan.nextLine().charAt(0);	
}
System.out.println("goodbye.");
	} }
java loops if-statement while-loop factorial
1个回答
0
投票

好的,首先,你需要知道什么是阶乘。

N! = n *(n-1)!

理解这一点非常重要。因子5是因子4的5倍。这实际上很酷,非常有用。所以你可以写一个能做到这一点的函数。

long factorial(long n) {
    if (n == 1) {
        return 1;
    }
    return n * factorial(n-1);
}

所以你要做的是定义一个类似于上面的方法。然后在你要求他们输入数字的循环中,你调用这个方法。它根据需要调用自己来为您进行计算。

还有其他方法。你可以做一个for循环。

long result = 0;
for (long val = 2; val <= n; ++val) {
    result = result * val;
}

但递归方法很酷。

© www.soinside.com 2019 - 2024. All rights reserved.