我编写此代码,并尝试了解所有执行的活动(递归)。 任何人都可以帮我这个画一张树,以纪念会发生什么?
public static String row(int n) {
if (n == 1)
return "1";
else
return row(n - 1) + " " + n;
}
public static String triangle(int a, int b) {
if (a == b)
return row(b);
else
return row(a) + "\n" + triangle(a + 1, b);
}
}
感谢的
答案 0 :(得分:1)
您的row
方法:
public static String row(int n) {
if (n == 1) {
return "1";
} else {
return row(n - 1) + " " + n;
}
}
返回一个String,其中包含1 - n之间用空格分隔的所有数字。例如row(4)
将返回一个字符串"1 2 3 4"
。
您的triangle
方法会为三角形的每一行打印一个row
。
public static String triangle(int a, int b) {
if (a == b) {
return row(b);
} else {
return row(a) + "\n" + triangle(a + 1, b);
}
}
为从a
到b
的每一行创建一行三角形。
e.g。 triangle(4,6)
将打印:
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
row
方法,如果给定值1
将返回“1”。任何其他值都会生成相当于row(n-1)
的字符串,后跟n
,因此它基本上会返回1 2 3 ... n
。
triangle
方法返回一个字符串,该字符串尝试用数字绘制三角形。因此triangle(4,6)
返回row(4) + triangle(5,6)
,返回row(5) + triangle(6,6)
,返回row(6)
。因此,最终结果将是:
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6