I am using the following two functions to calculate factorials and combinations.
public static long Factorial(long n)
{
    if (n == 0)
        return 1;
    else
        return n * Factorial(n-1);
}
public static long combinations (long n, long k)
{       
    return Factorial(n)/(Factorial(k) * Factorial(n - k));      
}
I am testing it using:
long test = combinations((long)21, (long)13);
It seems to work for small numbers such as 5,2. But if I try 21,13, I get incorrect answers (negatives or 0).
Would anyone know what is happening here?
 
     
     
    