/* BinomialRevisited.java
 * October 24, 2006
 * John Costanzo
 */

import edu.neu.ccs.*;
import edu.neu.ccs.gui.*;
import edu.neu.ccs.codec.*;
import edu.neu.ccs.console.*;
import edu.neu.ccs.filter.*;
import edu.neu.ccs.jpf.*;
import edu.neu.ccs.parser.*;
import edu.neu.ccs.pedagogy.*;
import edu.neu.ccs.quick.*;
import edu.neu.ccs.util.*;

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.font.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
import java.util.*;
import java.math.*;
import java.beans.*;
import java.lang.reflect.*;
import java.net.URL;
import java.util.regex.*;
import java.text.ParseException;

public class BinomialRevisited extends JPF
{
	public static void main( String[] args )
	{
		new BinomialRevisited();
	}
	
	public static XBigInteger Binomial( int n, int k )
	{
		if( k <= 0 )
			return new XBigInteger( 1 );
		
		if( ( n-k ) < k )
			return XBigInteger.divide( XBigInteger.multiply( Binomial( n, (n-k)-1 ), new XBigInteger( k + 1 )), new XBigInteger( k ) );
		
		return XBigInteger.divide( XBigInteger.multiply( Binomial( n, k-1 ), new XBigInteger( n - k + 1 )), new XBigInteger( k ) );
		
	}
	
}
