Формат треугольника Паскаля

Назначение - создать Треугольник Паскаля без использования массивов. У меня есть метод, который создает значения для треугольника ниже. Метод принимает целое число для максимального количества строк, которые пользователь хочет распечатать.

public static void triangle(int maxRows) {
    int r, num;
    for (int i = 0; i <= maxRows; i++) {
        num = 1;
        r = i + 1;
        for (int col = 0; col <= i; col++) {
            if (col > 0) {
                num = num * (r - col) / col;    
            }
            System.out.print(num + " ");
        }
        System.out.println();
    }
}

Мне нужно отформатировать значения треугольника так, чтобы он выглядел как треугольник:

              1
            1   1
          1   2   1
        1   3   3   1
      1   4   6   4   1
    1   5  10  10   5   1
  1   6  15  20  15   6   1

Я не могу для жизни понять, как это сделать. Пожалуйста, ответьте, имея в виду, что я новичок в программировании на Java.

Ответ 1

public static long pascalTriangle(int r, int k)
{
    if(r == 1 || k <= 1 || k >= r) return 1L;
    return pascalTriangle(r-1, k-1) + pascalTriangle(r-1, k);
}

Этот метод позволяет найти k-ое значение r-й строки.

Ответ 2

Это хорошее начало, где это домашнее задание, я оставлю вам остальное:

int maxRows = 6;
int r, num;
for (int i = 0; i <= maxRows; i++) {
    num = 1;
    r = i + 1;
    //pre-spacing
    for (int j = maxRows - i; j > 0; j--) {
        System.out.print(" ");
    }
    for (int col = 0; col <= i; col++) {
        if (col > 0) {
            num = num * (r - col) / col;
        }
        System.out.print(num + " ");
    }
    System.out.println();
}

Ответ 3

В каждой строке вам нужно распечатать:

  • n пробелы
  • m numbers
  • n пробелы

Ваша задача - определить n (который будет равен нулю в последней строке) и m на основе row number.

[Это больше похоже на комментарий, но мне нужны были больше параметров форматирования, чем комментарии)

Ответ 4

Вам нужно распечатать пробелы (как и другие, упомянутые выше), а также, поскольку это домашнее задание. Я оставляю его вам, но вы можете посмотреть на эту удобную небольшую функцию.

System.out.printf();

Вот справочное руководство

Также обратите внимание, что вам нужно будет учесть, что некоторые цифры длиннее 1 цифры!

Ответ 5

import java.util.*;
class Mine
{
    public static void main(String ar[])
    {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        for(int i=1;i<n;i++)
        {
            int size=1;
            for(int j=1;j<=i;j++)
            {
                int a[]=new int[size];
                int d[]=new int[size];
                for(int k=1;k<=size;k++)
                {
                    a[1]=1;
                    a[size]=1;

                    for(int p=1;p<=size;p++)
                    {
                        d[p]=a[p];
                    }

                    if(size>=3)
                    {
                        for(int m=2;m<size;m++)
                        {
                            a[m]=d[m]+d[m-1];
                        }
                    }
                }

                for(int y=0;y<size;y++)
                {
                    System.out.print(a[y]);
                }
                System.out.println(" ");
            }
            ++size;
        }
    }
}

Ответ 6

public class HelloWorld{

     public static void main(String []args){
       int s=7;
       int k=1;
       int r;

       for(int i=1;i<=s;i++){
           int num=1;
           r=i;
           int col=0;
           for(int j=1;j<=2*s-1;j++){

               if(j <= s-i)
               System.out.print("  ");
               else if(j >= s+i)
               System.out.print("  ");
               else{
                   if(k%2 ==0){
                       System.out.print("  ");

                   }
                   else{
                        if (col > 0) {
                            num = num * (r - col) / col;    
                        }

                    System.out.print(num+" ");
                       col++;
                   }
               k++;
               }
           }
           System.out.println("");
           k=1;
       }




     }
}

Ответ 7

Вы можете попробовать этот код в java. Это просто:)

public class PascalTriangle {

public static void main(String[] args) {
    int rows = 10;

    for(int i =0;i<rows;i++) {
        int number = 1;
        System.out.format("%"+(rows-i)*2+"s","");
        for(int j=0;j<=i;j++) {
             System.out.format("%4d",number);
             number = number * (i - j) / (j + 1);

        }
        System.out.println();
    }
  }
}

Ответ 8

public static void main(String[] args)
{
    int a, num;

    for (int i = 0; i <= 4; i++) 
    {
        num = 1;
        a = i + 1;

        for(int j=4;j>0;j--)
        { 
            if(j>i)
                System.out.print(" ");
        }

        for (int j = 0; j <= i; j++) 
        {
            if (j > 0) 
                num = num * (a - j) / j;   

            System.out.print(num + " ");
        }
        System.out.println();
    } 
}

Код отлично печатает треугольник pascal