tl  tr
  Home | Tutorials | Articles | Videos | Products | Tools | Search
Interviews | Open Source | Tag Cloud | Follow Us | Bookmark | Contact   
 Java > Core > Special Triangles > Pascal Triangle2

Pascal Triangle2 

File Name  :  
com/bethecoder/tutorials/core/triangle/PascalTriangle2.java 
Author  :  Sudhakar KV
Email  :  [email protected]
   
package com.bethecoder.tutorials.core.triangle;

public class PascalTriangle2 {

  /**
   @param args
   */
  public static void main(String[] args) {
    printPascalTriangle(13);
  }

  public static void printPascalTriangle(int num) {
    
    int spaces = 0;
    
    for (int i = ; i < num ; i ++ ) {
      
      //Assumption:
      //Each number occupies max 4 characters
      //1 for number separator i.e space
       //3 for actual number
      spaces = num - i - 1;
      System.out.print(getSpace((4*spaces/2)));
      
      for (int j = ; j <= i ; j ++) {
        //System.out.print(nCr(i, j) + " ");
        printNum(nCr(i, j));
      }
      System.out.println();
    }
  }
  
  public static long nCr(int n, int r) {
    return fact(n)/(fact(r* fact(n-r));
  }
  
  public static long fact(long n) {
    if (n <= 1) {
      return 1;
    else {
      return n * fact(n-1);
    }
  }
  
  private static void printNum(long num) {
    
    //4 - chars required including actual number
    //for single digit number prefix three spaces
    //for double digit number prefix two space
    //for three digit number prefix single space
    if (num < 10) {
      System.out.print("   " + num);
    else if (num < 100) {
      System.out.print("  " + num);
    else {
      System.out.print(" " + num);
    }
  }
  
  private static String getSpace(int spaces) {
    StringBuilder sb = new StringBuilder();
    for (int i = ; i < spaces ; i ++) {
      sb.append(" ");
    }
    return sb.toString();
  }
}
   

It gives the following output,
                           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
           1   8  28  56  70  56  28   8   1
         1   9  36  84 126 126  84  36   9   1
       1  10  45 120 210 252 210 120  45  10   1
     1  11  55 165 330 462 462 330 165  55  11   1
   1  12  66 220 495 792 924 792 495 220  66  12   1




 
  


  
bl  br