Рабочий вариант. Важно, что c = 1 в начале цикла для заполнения строк.
Формула c = c * (i - j + 1) / j для определения значения элемента треугольника верна.
Scanner in = new Scanner(System.in);
System.out.print("Enter n - number of rows in Pascal triangle: ");
int n = in.nextInt();
ArrayList<ArrayList<Integer>> triangle = new ArrayList<ArrayList<Integer>>(n);
// allocate rows
for (int i = 0; i < n; i++) {
int c = 1;
ArrayList<Integer> row = new ArrayList<Integer>();
// allocate elements
for (int j = 0; j <= i; j++) {
if (j == 0 || i == j) {
row.add(1);
} else {
c = c * (i - j + 1) / j;
row.add(c);
}
}
triangle.add(row);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; ++j) {
System.out.format("%4d", triangle.get(i).get(j));
}
System.out.println();
}
Разбирался по примеру (код ниже) где сделана обычная квадратная матрица.
int c = 0;
ArrayList<ArrayList<Integer>> arrayList = new ArrayList<ArrayList<Integer>>();
for (int i = 0; i < 10; i++) {
ArrayList<Integer> row = new ArrayList<Integer>();
for (int j = 0; j < 10; j++) {
row.add(c);
++c;
}
arrayList.add(row);
}
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; ++j) {
System.out.format("%"+"3d", arrayList.get(i).get(j));
}
System.out.println();
}
Спасибо за комментарии! Изначально ошибся с инициализацией первого элемента с в строке.
Продвижение своими сайтами как стратегия роста и независимости