我搜索过该网站,虽然已多次回答,但我还有一个问题。
我有使用递归进行阶乘的代码。我只是遇到了最简单的部分。
打印时,我的项目要求打印:
4! is equal to 4 x 3 x 2 x 1 = 24
如何获得for
循环或递归方式让"(4 x 3 x 2 x 1)"
使用任何n值?
import java.util.Scanner;
public class Factorial
{
public static void main(String args[])
{
System.out.println("Enter an integer:");
Scanner keyboard= new Scanner(System.in);
int num=keyboard.nextInt();
System.out.print(num+ "!"+ " is equal to ");
Print(num);
System.out.print(FactorialCalc(num));
}
public static double FactorialCalc(int number)
{
double result;
if(number<=1)
{
result= 1;
return result;
}
else
{
return result= number * FactorialCalc(number-1);
}
}
public static void Print(int n)
{
for(int i=n; i<=0;i--)
{
System.out.print(n + 'x' + (n-1));
}
}
}
答案 0 :(得分:4)
public static void Print(int n) {
for (int i = n; i > 0; i--) {
System.out.print(i);
if (i == 1) {
System.out.print("=");
continue;
}
System.out.print("x");
}
}
输出:
Enter an integer:
4
4! is equal to 4x3x2x1=24.0
答案 1 :(得分:0)
使用for循环的一个非常简单的解决方案是
int fact=1;
for(int i=1;i<n;i++)
fact=fact*i;
答案 2 :(得分:0)
你的代码有效,你只忘了一件事:
哪个变量用于计算Print方法中for循环的迭代次数?它在循环中的价值是什么?
public static void Print(int n)
{
for(int i=n; i<=0;i--) //i minor or equal 0? When does the loop need to finish?
//What happens if you multiply something with 0?
{
System.out.print(n + 'x' + (n-1));
}
}
尝试自己动手,但如果你不能......
...问题是您正在打印
n
而不是i
。在循环中,通过i
递减的变量为i--
。它从num
开始变得越来越小......这就是你需要打印的内容!
昌河印刷到:
System.out.print(i + "x");
你的任务是摆脱最后打印的x
! ; d
根据循环条件,当i
达到1时,循环必须停止
(num)x(num-1)x .. x 2 x 1 (没有0 !!)
因此条件为for(int i = n; i >= 1;i--)
答案 3 :(得分:0)
您可以将相乘值列表直接打印到递归中,而不是添加循环打印。在递归的print()
和if
子句中添加适当的else
语句。对于前者,只需打印"1 = "
即可。对于后者,请打印number + " x "
。
您实际上并不需要本地变量result
。我还建议使用关于大小写的Java约定:方法名称应以小写字母开头,大写字母表示类或接口。最后,我将返回类型更改为long
,因为阶乘是基于整数的,即使它们可以很快变大。
import java.util.Scanner;
public class Factorial {
public static long printFactorial(int number) {
if(number <= 1) {
System.out.print("1 = ");
return 1;
} else {
System.out.print(number + " x ");
return number * printFactorial(number-1);
}
}
public static void main(String args[]) {
System.out.print("Enter an integer: ");
Scanner keyboard= new Scanner(System.in);
int num=keyboard.nextInt();
System.out.print(num + "! is equal to ");
System.out.println(printFactorial(num));
}
}