所以我必须制作一个打印出数字三角形的程序,在某种意义上说,输入是triangleOfNumbers(1, 5)
,打印输出:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
我很快就想到了如何使用循环:
for (int i = start; i <= end; i++) {
for (int j = start; j <= i; j++) {
System.out.print(j + " ");
}
System.out.println();
}
但是,尽管我撞到了墙上,但我还是无法弄清楚如何通过递归来做到这一点。我实际上开始认为如果我能做出如此简单的事情,我对编程没有好处。
无论如何..任何解决方案或提示将不胜感激!如果你想进一步了解细节并实际解释在递归中发生了什么,那就更好了!
答案 0 :(得分:2)
第一个函数递归填充一行。从数字开始,该函数将数字连接为字符串,直到达到一个并且递归停止。除了连接行之外,第二个函数执行相同的操作,直到下限达到上限。
public class Test
{
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);
}
public static void main(String[] args)
{
System.out.println(triangle(1, 10));
}
}
答案 1 :(得分:0)
此代码可帮助您打印此类模式。
public String triangle(int n){
if(n<=0){
return "";
}else{
String p=triangle(n-1);
p=p +""+ (n);
System.out.println(p);
return p;
}
}