Метод рекурсивной печати - PullRequest
       6

Метод рекурсивной печати

0 голосов
/ 27 апреля 2020

Я пытаюсь напечатать следующий шаблон:

0
11
0
222
0
3333
0
222
0
11
0

Я хочу добиться этого с помощью рекурсии и al oop внутри указанного рекурсивного метода, который получает одно переданное целочисленное значение. Значение int определяет, насколько далеко заходит этот шаблон пирамиды. В приведенном выше примере значение int было бы 3. Мне удалось получить нижнюю половину, но я понятия не имею, чтобы получить верхнюю половину.

if (arg != 0) {
            System.out.println("0");
            for (int i = 0; i <= arg; i++) {
                System.out.print(arg);
            }
            System.out.println();
            print(arg - 1);
        }

Как бы я мог каким-то образом реализовать некоторое увеличение, что превращается в декремент к этой рекурсии? Поскольку я думаю, что именно так я смог бы достичь вышеуказанного паттерна.

Заранее большое спасибо!

1 Ответ

0 голосов
/ 27 апреля 2020

Вы можете передать два аргумента. Максимальное значение и начальное значение, которые будут равны нулю и

, затем увеличивают начальное значение, пока не достигнет максимума

, затем уменьшат Макс, пока не достигнут нуля

вызов - -> printline(3);

  private static void printline(int input,  int... vars) {
        if (input == 0) {
            System.out.println(0);
            return;
        }
        int start= vars.length > 0 ? vars[0] : 0;
        start++;
        System.out.println("0");
        for (int i = 0; (i <= start && i <= input); i++) {
            System.out.print(start >= input ? input : start);
        }
        System.out.println();
        if (start >= input) {
            input--;
        }

        printline(input, start);

    }
}
...