使用while循环获取Java factorial程序,以便在用户输入“y”并使factorial部分工作时继续重复
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用while循环获取Java factorial程序,以便在用户输入“y”并使factorial部分工作时继续重复相关的知识,希望对你有一定的参考价值。
我是编程的新手,我正在试图弄清楚如何让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.");
} }
答案
好的,首先,你需要知道什么是阶乘。
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;
}
但递归方法很酷。
以上是关于使用while循环获取Java factorial程序,以便在用户输入“y”并使factorial部分工作时继续重复的主要内容,如果未能解决你的问题,请参考以下文章
java中HttpURLConnection利用url获取文件流下载,while循环提前结束?
亲,用matlab中的while循环来求1到10的阶乘的和的编程怎么写,谢谢