標準出力にパスカル三角形を印刷するために再帰的メソッドを使用しようとします。私は、メソッドをどのように動作させたいのかというアイデアを得るための反復メソッドを作成することから始めました。以下のコードを参照してください。Java:より多くの再帰的メソッド
/**
* Print Pascal's triangle with PrintOut.
*
* @param n The amount of rows in total
*/
public static void printPascal (int n) {
for (int i = 0; i <n; i ++) {
System.out.format ("%" + (n-i) * 3 + "s", "");
for (int j = 0; j <= i; j ++) {
System.out.format ("% 6d", binom (i, j));
}
System.out.println();
}
}
のJavadocとbinom
/**
* Method which calculates the values in Pascal's triangle.
* @param n The row of "the place"
* @param k The column of "the place"
* @return A value on "the place" from the triangle
*/
public static int binom (int n, int k)
の署名が、私は、再帰的な方法で作業を始めました。私は印刷のためのクラス変数を使用することはできません - 私はベクトルを使用することはできません。私はオブジェクトを持つことができない、メソッドがあるクラス、2つのメソッドとメインは私が実装することができる唯一のメソッドです。 最大の問題は、各反復後にリセットされるため、binomが使用する変数を保存できないことです。 は、今私はprintPascalのため、このコードを持っている:
if (n < 0) {
return;
}
printPascal (n-1);
for (int k = 0; k <= n; k++) {
System.out.format ("%6d", binom(n, k));
}
System.out.println();
は、方法は、上記より、再帰的にする方法はあります - forループを奪うする方法はありますか? 図では、出力が反復メソッドでどのようになっているかを見ることができます。 Output
ifとforには常に中カッコを使用してください。関数呼び出しを新しい行に移動します。最後に投稿されたコードは分析するのが大変です。 –
ありがとう@AdrianAdamczyk私はここで新しいです。 :) –