Los números de subfactorial o rencontres ( A000166 ) son una secuencia de números similares a los números factoriales que se muestran en la combinatoria de permutaciones. En particular, el n º subfactorial n indica el número de alteraciones de un conjunto de n elementos. Un trastorno es una permutación en la que ningún elemento permanece en la misma posición. El subfactorial se puede definir mediante la siguiente relación de recurrencia:
!n = (n-1) (!(n-1) + !(n-2))
De hecho, la misma relación de recurrencia es válida para el factorial, pero para el subfactorial partimos de:
!0 = 1
!1 = 0
(Para el factorial tendríamos, por supuesto, 1! = 1. )
Su tarea es calcular ! N , dado n .
Reglas
Al igual que el factorial, el subfactorial crece muy rápidamente. Está bien si su programa solo puede manejar entradas n de modo que ! N pueda ser representado por el tipo de número nativo de su idioma. Sin embargo, su algoritmo debe en teoría funcionar para n arbitraria . Eso significa que puede suponer que los resultados integrales y el valor intermedio pueden ser representados exactamente por su idioma. Tenga en cuenta que esto excluye la constante e si se almacena o calcula con precisión finita.
El resultado debe ser un número entero exacto (en particular, no se puede aproximar el resultado con notación científica).
Puede escribir un programa o una función y utilizar cualquiera de los métodos estándar para recibir entradas y proporcionar salidas.
Puede usar cualquier lenguaje de programación , pero tenga en cuenta que estas lagunas están prohibidas de forma predeterminada.
Este es el código de golf , por lo que gana la respuesta válida más corta, medida en bytes .
Casos de prueba
n !n
0 1
1 0
2 1
3 2
4 9
5 44
6 265
10 1334961
12 176214841
13 2290792932
14 32071101049
20 895014631192902121
21 18795307255050944540
100 34332795984163804765195977526776142032365783805375784983543400282685180793327632432791396429850988990237345920155783984828001486412574060553756854137069878601