Java 阶乘递归
我已经搜索了这个网站,虽然它已经被回答了很多次,但我还有一个问题 我有用递归进行阶乘运算的代码。我只是在最简单的部分遇到了麻烦 打印时,我的项目要求打印:Java 阶乘递归,java,recursion,Java,Recursion,我已经搜索了这个网站,虽然它已经被回答了很多次,但我还有一个问题 我有用递归进行阶乘运算的代码。我只是在最简单的部分遇到了麻烦 打印时,我的项目要求打印: 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[])
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));
}
}
}
import java.util.Scanner;
公共类阶乘
{
公共静态void main(字符串参数[])
{
System.out.println(“输入一个整数:”);
扫描仪键盘=新扫描仪(System.in);
int num=keyboard.nextInt();
系统输出打印(num+“!”+”等于“);
打印(num);
系统输出打印(FactorialCalc(num));
}
公共静态双因子ALC(整数)
{
双重结果;
如果(数字一个使用for循环的非常简单的解决方案
int fact=1;
for(int i=1;i<n;i++)
fact=fact*i;
int-fact=1;
对于(int i=1;i使用for循环的非常简单的解决方案是
int fact=1;
for(int i=1;i<n;i++)
fact=fact*i;
int-fact=1;
对于(int i=1;i您的代码有效,您只忘记了一件事:
在打印方法中,哪个变量用于计算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));
}
}
公共静态无效打印(int n)
{
对于(int i=n;i您的代码有效,您只忘记了一件事:
在打印方法中,哪个变量用于计算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));
}
}
公共静态无效打印(int n)
{
对于(int i=n;i
以及输出:
Enter an integer:
4
4! is equal to 4x3x2x1=24.0
以及输出:
Enter an integer:
4
4! is equal to 4x3x2x1=24.0
您可以将打印相乘值列表直接合并到递归中,而不是添加循环打印。在递归的if
和else
子句中都放入适当的print()
语句。对于前者,只需打印“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));
}
}
import java.util.Scanner;
公共类阶乘{
公共静态长打印阶乘(整数){
if(number您可以将打印相乘值列表直接合并到递归中,而不是添加循环打印。在递归的if
和else
子句中都放入适当的print()
语句。对于前者,只需打印“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));
}
}
import java.util.Scanner;
公共类阶乘{
公共静态长打印阶乘(整数){
if(数字提示:在Print
方法中,哪个变量用于计算for
循环的迭代次数?它在循环中的值是什么?您正在询问如何生成实际的Z!Z x(Z-1)x(Z-2)…x 1
输出(int i=n;iMarc B是的,我只需要生成它,代码就可以正常工作。提示:在Print
方法中,哪个变量用于计算for
循环的迭代次数?它在循环中的值是什么?你在问如何生成实际的Z!是zx(Z-1)x(Z-2)…x1
输出(inti=n;iMarc B是的,我只需要生成它,代码就可以正常工作。i<=0
是一个不好的有条件的ontop。i<=0
是一个不好的有条件的ontop。@Vigan很高兴我能提供帮助。唯一的“增强”如果输入的数字是负数,我会加上一条错误消息。除此之外,你得到了我的选票!是的,这是正确的。祝你好运,当你的老师问你“继续”是什么意思(以及它为什么在那里);)哎呀!根据定义,0!=1,这个代码没有打印出来。这需要修正。@维根很高兴我能提供帮助。如果输入的数字是负数,我唯一要添加的“增强”是一条错误消息。除此之外,你得到了我的投票!是的,这是正确的。祝你好运,你的老师会问“继续”是什么意思(以及它为什么在那里);)哎呀!根据定义,0!=1,而这段代码不会打印出来。这需要修正。