所以我在java中有这个基本的阶乘计算器,但我在修改它以适应练习时遇到了问题。上面写着:修改阶乘方法来打印其局部变量和递归调用参数。对于每个递归调用,在单独的一行上显示输出,并添加缩进级别。我想我很难理解打印报表应该放在哪里。局部变量=number和递归调用参数=number-1也是如此。这是我迄今为止的代码。
public class Factorial {
private static String s1="";
public static long factorial(long number,long save) {
if (number <= 1) { //test for base case
System.out.printf("%s%d! = %d*%d!= ",s1,save,save,save-1);
s1 = s1 +" ";
return 1;
}
else{ //recursion step
return number * factorial(number - 1,save);
}
}
//output factorial for values 0-21
public static void main(String[] args) {
//calculate factorials 0-21
for (int counter = 0; counter <= 21; counter++){
long x = factorial(counter,counter);
System.out.printf("%d%n",x);
}
}
}
我想我很难理解打印报表应该放在哪里。
是的,的确如此。正如你所看到的,演习状态为
修改阶乘方法以打印其局部变量和递归调用参数。
因此,修改factorial
而不是main
。这样,每次调用factorial
时,都会按照练习的要求打印出一行新行。