我知道如何编码来查找数字的阶乘:
public static void factorialcalculations()
{
int usernumber, calculation, fact = 1;
System.out.println("Enter an integer to calculate it's factorial");
Scanner in = new Scanner(System.in);
usernumber = in.nextInt();
if ( usernumber < 0 )
System.out.println("Number should be non-negative.");
else
{
for ( calculation = 1 ; calculation <= usernumber ; calculation++ )
fact = fact*calculation;
System.out.println("Factorial of "+usernumber+" is = "+fact);
{
但我需要的是显示它乘以的数字,例如,如果它是5
我需要它才能显示阶乘:5*4*3*2*1=120
答案 0 :(得分:0)
使用递归。要为n = 1显示的值为“1 =”。对于任何其他n,它是“n *”+显示(n-1)。
display(2)=&gt; “2 *”+显示(1)=&gt; “2 * 1 =”
display(3)=&gt; “3 *”+显示(2)=&gt; “3 * 2 * 1 =”
等等。
答案 1 :(得分:0)
有很多方法可以做到这一点。使用现有代码,您可以在现有循环中打印它。递归将是寻找阶乘的优雅方式。
public static int factorial(int n) {
System.out.print("factorial is : ");
int result = 1;
for (int i = n; i >= 1; i--) {
result = result * i;
System.out.print(i!=1 ? (i+"*"): (i+"="));
}
System.out.println(result);
return result;
}
PS:作为最佳实践,您需要在此处理所有方案。 (字符串/否定/ ..输入)
答案 2 :(得分:0)
以下是您正在寻找的人:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the number whose factorial is to be found: ");
int n = scanner.nextInt();
int result = factorial(n);
System.out.println(getFactString(n,result));
}
public static int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result = result * i;
}
return result;
}
public static String getFactString(int n, int result){
String output= "";
int count = n;
for (int i = count; i > 0; i--) {
if (n==1) {
output = output + n +" = ";
break;
}
output = output + n+" * ";
n--;
}
return output + result;
}
也可以将StringBuilder做到这一点。使用getFactorString()方法,n是什么并不重要,您将获得返回显示的正确字符串。