私はこの基本的な階乗計算をJavaで行っていますが、私はこの問題を練習に合わせて修正するのに苦労しています。それは言う:要因の メソッドを変更して、ローカル変数と再帰呼び出しパラメータを出力します。再帰呼び出しごとに、出力を別の行に表示し、インデントのレベルを追加します。私はImがprintステートメントがどこに行かなければならないのか理解するのが難しいと思う。ローカル変数= numberと再帰呼び出しパラメータ= number-1も同様です。ここまでは私のコードです。階乗再帰「Javaで可視化されました」
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);
}
}
}
おそらく、この質問に役立つものは、予想される出力がどのようになるべきかを書いていることでしょう。 – dwjohnston
はい私は正しい出力を今は持っていますが、フォーマットに問題があります。各行がインデントされるべきときに、1つの行に出てきます。私はフォーマットヘルパーを読んだが、私はそれを理解することはできない。それはあなたが私を助けてくれるものですか? – Cake771