subfactorial又はrencontres番号(A000166は)置換の組合せ論に表示階乗番号と同様の番号のシーケンスです。特に、n番目の階乗!nは、n個の要素のセットの混乱の数を示します。混乱とは、同じ位置に要素が残っていない順列です。サブ階乗は、次の繰り返し関係を介して定義できます。
!n = (n-1) (!(n-1) + !(n-2))
実際、階乗についても同じ再帰関係が成り立ちますが、下位階乗については次から始まります。
!0 = 1
!1 = 0
(階乗の場合、もちろん1!= 1になります。)
あなたの仕事は計算することである!nは、与えられたn個。
ルール
階乗のように、階乗も非常に速く成長します。プログラムが入力nのみを処理でき、!nが言語のネイティブの数値型で表現できる場合は問題ありません。ただし、アルゴリズムは理論的には任意のnに対して機能する必要があります。つまり、積分結果と中間値は、言語で正確に表現できると仮定できます。定数eが有限精度で保存または計算される場合、これは定数eを除外することに注意してください。
結果は正確な整数である必要があります(特に、科学表記法で結果を近似することはできません)。
プログラムまたは関数を作成し、入力を受け取って出力を提供する標準的な方法を使用できます。
任意のプログラミング言語を使用できますが、これらの抜け穴はデフォルトでは禁止されています。
これはcode-golfであるため、バイト単位で測定された最短の有効な回答が勝ちます。
テストケース
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