Как сделать узор пирамиды с цифрами? - PullRequest
1 голос
/ 19 июня 2020

Как сделать эту пирамиду с рекурсией в java?

     1
    222
   33333
  4444444
     .
     .
     .

Я сделал этот шаблон, но количество строк увеличивается на 1 вместо 2

    static void recursion(int row, int k, int j,int c){
    if(row>c){
        return;
    }
    else{
        if(k==row){
        System.out.println();
        recursion(++row, 0,0,c);
        }
        else if(c-j>row){
        System.out.print(" ");
        ++j;
        recursion(row, k, j,c);
        }
        else{
        System.out.print(row+" ");
        recursion(row, ++k, j,c);
        }   
    }

Результат:

     1 
    2 2 
   3 3 3 
  4 4 4 4 
 5 5 5 5 5 

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Вот решение, использующее ваш существующий дизайн logi c, или как я понял. Я изменил имена некоторых переменных, чтобы вспомнить, что и что делало. (используйте значащие имена при коде)

recursion(1, 0, 0, 7);


static void recursion(int row, int space, int num, int total){
    if (space < total-row){
            System.out.print(' ');
            if (total > 9) System.out.print(' ');
            recursion(row, ++space, num, total);
        }else if(num < row*2-1){
            String r = (row < 10 && total > 9)?" "+row:""+row;
            System.out.print(r);
            recursion(row, space, ++num, total);
        }else{
            System.out.println();
            recursion(++row, 0, 0, total);
        }
    }
}
0 голосов
/ 19 июня 2020

Попробуйте это.

static void pyramid(int n, int i) {
    if (i > n) return;
    System.out.println(" ".repeat(n - i) + Integer.toString(i).repeat(i * 2 - 1));
    pyramid(n, i + 1);
}

и

pyramid(5, 1);

результат:

    1
   222
  33333
 4444444
555555555
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...