递归打印阶乘
Recursive print Factorial
所以我确实搜索并阅读了该网站上的每个阶乘列表,但我似乎无法弄清楚我的代码有什么问题。我尝试了多种不同的 return 方法,但它们都失败了。有什么想法吗?
public class RecursivelyPrintFactorial {
public static void printFactorial(int factCounter, int factValue) {
int nextCounter = 0;
int nextValue = 0;
if (factCounter == 0) // Base case: 0! = 1
System.out.println("1");
}
else if (factCounter == 1) // Base case: print 1 and result
System.out.println(factCounter + " = " + factValue);
}
else { // Recursive case
System.out.print(factCounter + " * ");
nextCounter = factCounter - 1;
nextValue = nextCounter * factValue;
}
return factValue * printFactorial(factValue - factCounter);
}
}
public static void main (String [] args) {
int userVal = 0;
userVal = 5;
System.out.print(userVal + "! = ");
printFactorial(userVal, userVal);
}
}
我觉得我的 return 中的方程不正确,但我尝试了我能想到的每一种组合。它让我发疯。每一个都报错。有什么想法吗?
return factValue * printFactorial(factValue - factCounter);
我假设您应该使用 "next" 值而不是这些值。
编辑:另请注意,该函数有两个参数并且是无效的。返回 factValue 时间 void 没有意义。
所以我确实搜索并阅读了该网站上的每个阶乘列表,但我似乎无法弄清楚我的代码有什么问题。我尝试了多种不同的 return 方法,但它们都失败了。有什么想法吗?
public class RecursivelyPrintFactorial {
public static void printFactorial(int factCounter, int factValue) {
int nextCounter = 0;
int nextValue = 0;
if (factCounter == 0) // Base case: 0! = 1
System.out.println("1");
}
else if (factCounter == 1) // Base case: print 1 and result
System.out.println(factCounter + " = " + factValue);
}
else { // Recursive case
System.out.print(factCounter + " * ");
nextCounter = factCounter - 1;
nextValue = nextCounter * factValue;
}
return factValue * printFactorial(factValue - factCounter);
}
}
public static void main (String [] args) {
int userVal = 0;
userVal = 5;
System.out.print(userVal + "! = ");
printFactorial(userVal, userVal);
}
}
我觉得我的 return 中的方程不正确,但我尝试了我能想到的每一种组合。它让我发疯。每一个都报错。有什么想法吗?
return factValue * printFactorial(factValue - factCounter);
我假设您应该使用 "next" 值而不是这些值。
编辑:另请注意,该函数有两个参数并且是无效的。返回 factValue 时间 void 没有意义。