Cómo generar el triángulo de Pascal en Java.

En el triángulo de Pascal, el valor de cada fila es la suma de los valores que están por encima de él en la fila anterior. Si no hay un valor disponible se usa uno. Usando la notación de Java n [k] = n-1 [k-1] + n-1 [k]. La primera fila contiene el valor uno.

El triángulo de Pascal se genera utilizando 2 para bucles y comenzando desde arriba con el primer elemento.

Crea el siguiente archivo java:

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

public class InterviewPascalTriangle {

    protected List<List<Integer>> generatePascalTriangle(int nbRows){
	// Validación de entrada
	if ( nbRows < 0 )
	    throw new IllegalArgumentException( "El número de filas no puede ser negativo." );
	
	// El objeto a devolver.
	List<List<Integer>> toReturn = new LinkedList<List<Integer>>();

	// Guarda la fila anterior.
	List<Integer> previousRow = Collections.emptyList();

	// Procesar todas las filas
	for( int i = 0 ; i <= nbRows ; i++ ){
	    // Crear la fila actual
	    List<Integer> currentRow = new LinkedList<Integer>();
	    toReturn.add( currentRow );

	    // Definir el valor anterior.
	    int previousValue = 0;
	    // Bucle en todos los valores.
	    for(int c : previousRow){
		currentRow.add( c + previousValue );
		
		// Establecer el valor actual como el anterior.
		previousValue = c;
	    }


	    // Agrega el último valor
	    currentRow.add( 1 );
	    
	    // Guarda la fila actual.
	    previousRow = currentRow;
	}
	
	return toReturn;
    }
    
   public static void main(String[] argv) throws Exception {
	InterviewPascalTriangle t = new InterviewPascalTriangle();

	
	List<List<Integer>> res = t.generatePascalTriangle(7);
	
	System.out.println( "Resultado:" );
	String tmp = res.get( res.size() -1 ).toString();
	
	int max = (int) tmp.length();
	
	for(List<Integer> c : res ){
	    String toDisplay = c.toString();
	    int padding = ( max - toDisplay.length()) / 2 ;
	    StringBuilder sb = new StringBuilder();
	    for(int i=0; i < padding; i++){
		sb.append( " " );
	    }
	    
	    sb.append( toDisplay );
	    
	    System.out.println( sb.toString() );
	}

    }



}

El resultado será:

Resultado:
            [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]
[1, 7, 21, 35, 35, 21, 7, 1]

Las filas del triángulo de Pascal están numeradas de 0 a n. La primera fila solo contiene el valor 1.

Referencias

Pascal's triangle