Как избавиться от Integer.parseInt в строке:
BigInteger i = BigInteger.valueOf(Integer.parseInt(factorial(n - 1)) * n);
Метод имеет вид String factorial(int n).
вот так
BigInteger i = new BigInteger(factorial(n));
исправить String factorial(int n) на BigInteger factorial(int n)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей