Мне нужно написать Java-код, который печатает паскальский треугольник. Это то, чем я занимался до сих пор.
import java.util.Scanner;
class Pascal {
static int bnk (int n, int k) {
if (k==0 || k==n) {
return 1;
} // B(n,k) Berechnung für Standardwert = 1;
else {
int x = (bnk(n-1, k-1) + bnk(n-1, k));
return x;
} // Berechnung aller sonstigen B(n,k)-Werte.
} // Berechnung von B(n,k)
public static void main (String [] args) {
Scanner sc = new Scanner(System.in);
System.out.println("How many rows?: ");
int r = sc.nextInt();
sc.close();
for (int n=0; n<r; n++) {
for (int j=0; j<(r-n); j++) {
System.out.print(" ");
} // Setzt Anzahl Leerzeichen vor erster Zahl
for (int k=0; k<=n; k++) {
int b = bnk(n,k);
System.out.print(b+" ");
} // Berechnet in jeder Reihe alle Elemente
System.out.println();
} // Berechnet Reihe nach Reihe
} // main
} // class Pascal
Первый метод вычисляет значения, необходимые в треугольнике. Второй печатает строку треугольника за строкой, печатая (r-n) пробелы. n обозначает текущую строку, а r - общее количество строк. Таким образом, левая сторона треугольника печатается правильно, но проблема в том, что когда значения в треугольнике становятся слишком высокими, треугольник теряет форму на правой стороне. Надеюсь, то, что я описал, было понятно. Не могли бы вы помочь мне найти способ правильно отформатировать треугольник?
Текущий вывод выглядит так:
5 рядов: https://gyazo.com/d9a536d3ac92c155707ebb2e4ee7745b
10 рядов: https://gyazo.com/4ab0479f9324dd7c2911398ea5a71e33