Java で再帰を導入する課題があり、障害に直面しています。割り当てには、渡された整数値に応じて、アスタリスクの数の行数を出力する再帰メソッドが必要です。たとえば、変数 n として 4 が渡された場合、出力は最初の行に 1 つのアスタリスク、次の行に 2 つのアスタリスク、次の 3 つのアスタリスク、次の 4、4、3、2、および 1 と続きます。
出力の前半を完了することができました (最適かどうかはわかりませんが) が、メソッドを元に戻す方法がわかりません。これはすべて、変数 (n) をメソッドに渡して 1 回のメソッド呼び出しで行う必要があります。
これが私がこれまでに持っている方法です:
public static void myMethod(int n)
{
if (n <= 1) {
System.out.print("*");
} else {
myMethod(n - 1);
for (int i = 0; i < n; i++) {
System.out.print("*");
}
}
System.out.print("\n"); // new line
}
次のように main から呼び出されます。
myMethod(n);
だから私が持っているのは、同じ行に「n」回アスタリスクを出力する for ループです。for ループの後、次の行に進み、n を変更して循環します。しかし、私はそれを逆にする方法がわかりません。
私のメソッドはメソッドから印刷されます。インストラクターは、2 つの変数 (n) と NULL 文字列を渡すサンプル バージョンを見せてくれました。
public static String myMethod(int n, String displayStr) {
String currentStr = "";
for (int i = 0; i < n; i++)
currentStr += "*";
currentStr += "\n";
if (displayStr == null){
return myMethod((n - 1), currentStr);
} // end base case
else if (n > 0){
return myMethod((n - 1), (currentStr + displayStr + currentStr));
}
else {
return displayStr;
}
} // end recursion method myMethod
彼のバージョンは、次のコード行を使用して main から出力されます。
System.out.println(myMethod(n, null));
私は彼のバージョンを試してみましたが、その側に三角形が印刷されますが、最大の線は 2 回ではなく 1 回しか印刷されません。私は一日中彼を変更して真ん中に重複行を追加しようとしましたが、それは不可能だと考え始めています.
どんな助けでも大歓迎です。私はこれで完全に立ち往生しています。