这是著名的错排问题,设 D(n) 表示n封信全装错的情况,根据题意,有:
{D(0)=1D(1)=0D(2)=1D(3)=2D(4)=9⋯\begin{equation*} \begin{cases} D(0) = 1\\ D(1) = 0\\ D(2) = 1\\ D(3) = 2\\ D(4) = 9\\ \cdots \end{cases} \end{equation*} ⎩⎨⎧ D(0)=1D(1)=0D(2)=1D(3)=2D(4)=9⋯
那么,由递推可得:
D(n)={1,n=00,n=1(n−1)⋅(D(n−1)+D(n−2)),n≥2\begin{equation*} D(n)= \begin{cases} 1, &n=0\\ 0, &n=1\\ (n-1)\cdot(D(n-1)+D(n-2)),&n\geq2 \end{cases} \end{equation*} D(n)=⎩⎨⎧ 1,0,(n−1)⋅(D(n−1)+D(n−2)), n=0n=1n≥2
所以,可以写出递推代码:
或者: