
class JustifiedTriangle
{

    public void printLeftJustified( int n )
    {
        if( n == 0 ) {      // Base Case
            return;
        }
        
        // Recursive case
        printLeftJustified( n - 1 );
        printLine( n, '*' );                   // print asterisks 'n' times
        System.out.println();
    }

    // Starter method - initialize "original size" to "n"
    public void printRightJustified( int n )
    {
        printRightJustified( n, n );
    }
    
    private void printRightJustified( int n, int original )
    {
        if( n == 0 ) {        // Base case
            return;
        }    
        
        // Recursive case
        printRightJustified( n-1, original );  // decrement "n" while retain "original size"
        printLine( original - n, ' ' );        // print spaces
        printLine( n, '*' );                   // print asterisks
        System.out.println();
    }

    /*
     *  Helper method for printing one line of 'n' character ('c').
     */
    private void printLine( int n, char c )
    {
        if( n == 0 ) {                         // Base Case
            return;
        }
        
        // Recursive case
        System.out.print( c );
        printLine( n-1, c );
    }
}


