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.
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() ); } } }
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.