(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]; p>
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();
}
} p>
private void printSpaces(int spaceCount) {
for(int i = 0; i < spaceCount; i++) {
System.out.print(" ") ;
}
}
}