I am trying to do Factorial with Recursion and BigIntegers but eclipse is complaining about the BigInteger. I know the program is supposed to be simple but it is giving me headache. Here is the code.
import java.util.Scanner;
import java.math.BigInteger;
public class Factorial
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Enter integer");
BigInteger n = input.nextBigInteger();
System.out.println("Factorial of " + n + " is " + fact(n));
}
public static int fact(BigInteger n)
{
if(n ==0)
{
return 1;
}
else
{
return n * fact(n-1);
}
}
}
BigInteger
does not support comparison using ==
and multiplication using *
. Instead, you have to call the appropriate methods of the BigInteger
class (equals()
and multipy()
).
Also note that there exist BigInteger.ZERO
and BigInteger.ONE
.
Finally, the return type of your fact
method should be BigInteger
and not int
. Whether you want the argument to be of type BigInteger
or int
is up to you.