Red de conocimiento informático - Consumibles informáticos - (Pregunta de programación JAVA) Cómo programar el triángulo YANG en forma de pirámide (no el de la izquierda)

(Pregunta de programación JAVA) Cómo programar el triángulo YANG en forma de pirámide (no el de la izquierda)

clase pública Yanghui {

public static void main(String[] args) {

Yanghui yang = new Yanghui();

yang.printYanghuiTriangle(13);

}

/**

* Genera el triángulo Yang Hui con un número específico de filas

*

* @param líneas El número de líneas en el Triángulo Yanghui

*/

public void printYanghuiTriangle(int lines) {

if(lines < 1) {

throw new IllegalArgumentException("las líneas deben ser mayores que 0.");

}

if(lines > 30) {

throw new IllegalArgumentException("las líneas son demasiado grandes.");

}

int[] line = new int[lines];

int maxLen = getMaxLen(líneas);

for(int i = 0; i < líneas; i++) {

línea[0] = línea[i] = 1;

p>

for(int j = 1, k = i / 2, pre = línea[0]; j <= k; j++) {

int cur = línea [j];

línea[i - j] = línea[j] += pre;

pre = cur;

}

printLine(linea, i + 1, maxLen);

}

}

/**

* Calcular en base a el triángulo de Yang Hui con el número especificado de filas La longitud del número más grande

* @param lines El número de líneas en el triángulo de Yang Hui

* @return La longitud del mayor número

*/

private int getMaxLen(int líneas) {

int k = líneas / 2;

long maxNum = factorial (k + 1, líneas - 1) / factorial(1, líneas - 1 - k);

return getLength(maxNum);

}

/ **

* Cálculo factorial

Cálculo

* @param start El número inicial del cálculo factorial

* @param num El número final del cálculo factorial

* @return El resultado del cálculo factorial

*/

factorial largo privado(int inicio, int num) {

resultado largo = inicio > 0 inicio: 1L;

while (num > inicio) {

resultado *= num--;

}

devuelve resultado;

}

/**

* Calcular la longitud del número en función del número especificado

* @param num number

* @return la longitud del número

*/

private int getLength(long num) {

int len ​​​​= 0;

while(num > 0L) {

num /= 10L;

len++;

}

return len;

}

private void printLine(int[] yanghui, int line, int width) {

printSpaces((yanghui.length - line) * width);

for(int i = 0; i < línea; i++) {

if(i > 0) {

printSpaces(ancho);

}

printSpaces( ancho - getLength(yanghui[i]));

System.out.print(yanghui[i]);

}

System.out.println ();

if(ancho > 1) {

System.out.println();

}

}

private void printSpaces(int spaceCount) {

for(int i = 0; i < spaceCount; i++) {

System.out.print(" ") ;

}

}

}