Die subfactorialen oder rencontres-Zahlen ( A000166 ) sind eine Folge von Zahlen, die den faktoriellen Zahlen ähneln, die in der Kombinatorik von Permutationen auftreten. Insbesondere gibt das n- te Unterfaktor ! N die Anzahl der Abweichungen einer Menge von n Elementen an. Eine Störung ist eine Permutation, bei der kein Element an derselben Position verbleibt. Das Subfactorial kann über die folgende Wiederholungsrelation definiert werden:
!n = (n-1) (!(n-1) + !(n-2))
Tatsächlich gilt dieselbe Wiederholungsrelation für die Fakultät, aber für die Unterfakultät, von der wir ausgehen:
!0 = 1
!1 = 0
(Für die Fakultät hätten wir natürlich 1! = 1. )
Ihre Aufgabe ist es,! N zu berechnen , gegeben n .
Regeln
Wie die Fakultät wächst auch die Unterfakultät sehr schnell. Es ist in Ordnung, wenn Ihr Programm Eingaben n nur so verarbeiten kann, dass ! N durch den nativen Zahlentyp Ihrer Sprache dargestellt werden kann. Ihr Algorithmus muss jedoch theoretisch für beliebiges n funktionieren . Das heißt, Sie können davon ausgehen, dass ganzzahlige Ergebnisse und Zwischenwerte genau durch Ihre Sprache dargestellt werden können. Beachten Sie, dass dies die Konstante e ausschließt, wenn sie mit endlicher Genauigkeit gespeichert oder berechnet wird.
Das Ergebnis muss eine genaue Ganzzahl sein (insbesondere können Sie das Ergebnis nicht mit wissenschaftlicher Notation approximieren).
Sie können ein Programm oder eine Funktion schreiben und eine der Standardmethoden zum Empfangen von Eingaben und zum Bereitstellen von Ausgaben verwenden.
Sie können jede Programmiersprache verwenden , beachten Sie jedoch, dass diese Lücken standardmäßig verboten sind.
Das ist Code-Golf , also gewinnt die kürzeste gültige Antwort - gemessen in Bytes .
Testfälle
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