Acabo de implementar (una vez más) una plantilla recursiva para calcular el factorial de un entero en tiempo de compilación (¿quién hubiera pensado que algún día realmente lo necesitaría). Aún así, en lugar de lanzar el mío, fui a Boost en busca de una respuesta. Sin embargo, la función factorial en matemáticas especiales específicamente prohíbe su uso con tipos enteros, así que solo escribí la mía.Calculando el factorial de un entero pequeño en tiempo de compilación
Aún así, ¿hay alguna otra función en Boost que deba usar? ¿Debería convertir mi número entero al double
y usar la función boost::factorial
? ¿El cálculo se realiza en tiempo de compilación?
Hay una profundidad limitada en la que una plantilla puede recurse, por lo que IRL la aceleración de calcular el factorial en tiempo de compilación no es tan buena (especialmente si se usa programación dinámica). –
Consulte la respuesta de "R .." en esta pregunta: http://stackoverflow.com/questions/3786207/howto-compute-the-factorial-of-x. El desbordamiento es muy probable por qué Boost no quiere que uses una int para esto. – mwigdahl
@mwigdahl ¡Puedo caber hasta 20! en un int largo sin signo que es más de lo que necesito (sin embargo, revisar el desbordamiento sería una de las razones que me empujan a preferir usar una función de biblioteca, mi implementación no lo comprueba). – gnzlbg