шаблон * без петель

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);
}
  • 4
    Я бы предложил использовать отладчик для пошагового выполнения кода, чтобы выяснить, где выполнение кода отличается от ожидаемого.
  • 0
    вверх и вниз идут на одинаковую высоту.
Теги:
recursion
tail-recursion

2 ответа

2

Все, что вам нужно изменить, это этот метод:

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

в up или down изменении size до size-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);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню