我知道这个问题已经过时了,我解决了它的计算部分。但我的问题是主要的方法,我找不到它的解决方案。 我需要递归地调用Pascal三角函数,但也可以将它打印出来。我可以打印前10行,但我不知道如何翻转它是颠倒的。这是我的代码:
public class RecursivePascalTriangle {
static int get_pascal(int row, int col) {
if (col == 0 || col == row) {
return 1;
} else {
return get_pascal(row - 1, col - 1) + get_pascal(row - 1, col);
}
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
for (int k = 0; k <= i; k++) {
System.out.print(get_pascal(i, k) + " ");
}
System.out.println();
}
}
}
任何人都可以帮助我吗?我被困在这里。我不想使用任何for循环。谢谢!
答案 0 :(得分:0)
现在,一切都是递归的。
public class RecursivePascalTriangle {
private static String[] levels;
public static int get_pascal(int row, int col) {
if (col == 0 || col == row) {
return 1;
} else {
return get_pascal(row - 1, col - 1) + get_pascal(row - 1, col);
}
}
public static void main(String[] args) {
//row size variable
int rowNum = 10;
levels = new String[rowNum];
int i = 0;
int arIndex = 0;
System.out.println(recurseRow(i, rowNum, arIndex));
System.out.println("---------------\nUpside Down\n----");
System.out.println(upsideDown(rowNum-1));
}
//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 = 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 get_pascal(i, k) + " " + recurseCol(i, next);
}
}
//upside down recursion
public static String upsideDown(int index) {
if(index < 0) {
return "";
}
else {
String str = levels[index];
index -= 1;
return str + "\n" + upsideDown(index);
}
}
}