Вы можете добавить префикс нескольких пробелов, где вы рекурсивно создаете строку: вместо
String str = recurseCol(i, k);
у вас будет
String str = "";
for (int spaces = 0; spaces < 2 * (rowNum - i - 1); spaces++) {
str += " ";
}
str += recurseCol(i, k);
Вам также нужно отформатировать все числа, чтобы такой же ширины внутри recurseCol, например теперь все числа будут иметь 3 цифры в ширину:
return String.format("%3d %s", get_pascal(i, k), recurseCol(i, next));
Полученный код измененных методов:
//Recursion for row
public static String recurseRow(int i, int rowNum, int arrayIndex) {
if( i == rowNum)
return "";
else {
int k = 0;
int next = i + 1;
String str = "";
for (int spaces = 0; spaces < 2 * (rowNum - i - 1); spaces++) {
str += " ";
}
str += recurseCol(i, k);
levels[arrayIndex] = str;
arrayIndex += 1;
return str + "\n" + recurseRow(next, rowNum, arrayIndex);
}
}
//Recursion for column
public static String recurseCol(int i, int k) {
if(k > i)
return "";
else {
int next = k + 1;
return String.format("%3d %s", get_pascal(i, k), recurseCol(i, next));
}
}
"magi c" числа 2 и 3 связаны друг с другом: если каждое число имеет n-разрядную ширину, то нам нужно добавить префикс в строку, состоящую из (n-1) пробелов, повторенных (rowNum - i - 1) раз.
Существуют и другие методы для достижения этих целей, но я думаю, что вышеизложенное позволяет получить результат с минимальными изменениями.