#691. 【递归】装信封问题

【递归】装信封问题

说明

马小虎在人人网上结交一批女网友,在情人节那天,马小虎玩起了浪漫,同时给nn个女网友每人写了一封各有特色的信,要命的是,激动的他竟然把所有的信都装错了信封! 编写一个程序,计算将所有的信都装错信封,共有多少种不同情况?

例如,3封信全装错信封的种数为2,即231和312;输入包含若干组数据。每组数据是一个整数N1N20N(1\leqslant N \leqslant 20),表示马小虎写信的封数。NN = 0 时输入结束。输出对于每组数据,在单独的一行输出一个整数(所有的信都装错信封的种数)。

可用下面公式(错位排列的递推公式):

基本形式:D(1)=0; D(2)=1

递归形式:D(nn)=(nn-1)*( D(nn-1)+D(nn-2))

输入格式

一个正整数N1N20N,1\leqslant N \leqslant 20

输出格式

所有的信都装错信封的不同情况数。

样例

1
0