I numeri sottofattoriali o rencontres ( A000166 ) sono una sequenza di numeri simili ai numeri fattoriali che si presentano nella combinatoria delle permutazioni. In particolare, il n ° subfactorial ! N indica il numero di alterazioni di un insieme di n elementi. Uno squilibrio è una permutazione in cui nessun elemento rimane nella stessa posizione. Il sottofattoriale può essere definito tramite la seguente relazione di ricorrenza:
!n = (n-1) (!(n-1) + !(n-2))
In effetti, la stessa relazione di ricorrenza vale per il fattoriale, ma per il sottofattoriale partiamo da:
!0 = 1
!1 = 0
(Per il fattoriale avremmo, ovviamente, 1! = 1. )
Il tuo compito è calcolare ! N , dato n .
Regole
Come il fattoriale, il sottofattoriale cresce molto rapidamente. Va bene se il tuo programma può gestire solo input n tale che ! N può essere rappresentato dal tipo di numero nativo della tua lingua. Tuttavia, il tuo algoritmo deve in teoria funzionare per n . Ciò significa che puoi presumere che i risultati integrali e il valore intermedio possano essere rappresentati esattamente dalla tua lingua. Si noti che ciò esclude la costante e se è memorizzata o calcolata con precisione finita.
Il risultato deve essere un numero intero esatto (in particolare, non è possibile approssimare il risultato con notazione scientifica).
È possibile scrivere un programma o una funzione e utilizzare uno dei metodi standard ricevere input e fornire output.
È possibile utilizzare qualsiasi linguaggio di programmazione , ma si noti che queste scappatoie sono vietate per impostazione predefinita.
Questo è code-golf , quindi la risposta valida più breve - misurata in byte - vince.
Casi test
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