*无循环的模式

时间:2014-07-07 07:22:10

标签: java recursion tail-recursion

所以我有这样做的代码:

.
..
...
...
..
.

但我希望它能做到:

.
..
...
..
.

我似乎无法找到添加额外点线的错误..如果你有任何建议可以帮助消除,但请记住,我试图在没有循环的情况下工作这个时间点......(目前正在攻读考试)

代码是:

public void put(int n) {
    if (n > 0) {
        System.out.print(".");
        put(n-1);
    }
}

public void up(int n) {
    if (n > 0) {
        up(n - 1);
        put(n);
        System.out.print("\n");
    }   
}

public void down(int n) {
    if (n > 0) {
        put(n);
        System.out.print("\n");
        down(n-1);
    }
}

public void makePattern(int size) {
    stringList = new ArrayList<String>();
    up(size);
    down(size);
}

2 个答案:

答案 0 :(得分:2)

您需要改变的是这种方法:

public void makePattern(int size) {
        stringList = new ArrayList<String>();
        up(size);
        down(size);
    }

updownsize更改为size-1

答案 1 :(得分:1)

试试这个:

public void put(int n){
    if(n > 0){
        System.out.print(".");
        put(n-1);
    }
}

public void up(int n) {
    if (n > 0) {
        up(n - 1);
        put(n);
        System.out.print("\n");
    }
}

public void down(int n){
    if(n > 0){
        put(n);
        System.out.print("\n");
        down(n-1);
    }
}

public void makePattern(int size) {
    stringList = new ArrayList<String>();
    up(size);
    down(size-1);
}