数字的三角形与递归

时间:2015-03-29 19:53:37

标签: java recursion numbers

所以我必须制作一个打印出数字三角形的程序,在某种意义上说,输入是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();
    }

但是,尽管我撞到了墙上,但我还是无法弄清楚如何通过递归来做到这一点。我实际上开始认为如果我能做出如此简单的事情,我对编程没有好处。

无论如何..任何解决方案或提示将不胜感激!如果你想进一步了解细节并实际解释在递归中发生了什么,那就更好了!

2 个答案:

答案 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;
    }
}