Fatoriais em Swift

Eu preciso de uma boa função fatorial. O que eu escrevi aqui funciona inteiramente, exceto quando n fica muito grande. Isso é para um aplicativo de calculadora e posso retornar 0/0 para valores que não podem ser fatoriais, porque eu tenho um verificador de erros que declarará isso impossível. No entanto, a execução da função em um número muito grande trava o aplicativo. Não posso usar um operador de intervalo porque meus tipos são duplos.

func factorial(n: Double) -> Double {
    if n >= 0 {
        return n == 0 ? 1 : n * self.factorial(n - 1)
    } else {
        return 0 / 0
    }
}

Qual é a melhor maneira de fazer isso?

questionAnswers(2)

yourAnswerToTheQuestion