问题描述
这是一个很经典的数学问题:有一个人写了n封信件,对应n个信封,然而粗心的秘书却把所有信件都装错了信封,那么一共有多少种装错的装法?
数学抽象
这个问题可抽象为以下一个数学问题:已知一个长度为n的有序序列{a1,a2,a3,…,an},打乱其顺序,使得每一个元素都不在原位置上,则一共可以产生多少种新的排列?
例如:原序列为{a,b,c,d,e},则新序列{b,c,d,e,a}为其一个全错位排列,新序列中每一个元素都不在原来的位置上。
问题解决
首先考虑几种简单的情况:
- 原序列长度为1
序列中只有一个元素,位置也只有一个,这个元素不可能放在别的位置上,因此原序列长度为1时该为题的解是0。 - 原序列长度为2
设原序列为{a,b},则全错位排列只需将两个元素对调位置{b,a},同时也只有这一种可能,因此原序列长度为2时该问题的解是1。 - 原序列长度为3
设原序列为{a,b,c},则其全错位排列有:{b,c,a},{c,a,b},解是2。 - 原序列长度为4
设原序列为{a,b,c,d},则其全错位排列有:{d,c,a,b},{b,d,a,c},{b,c,d,a},{d,a,b,c},{c,d,b,a},{c,a,d,b},{d,c,b,a},{c,d,a,b},{b,a,d,c},解是9。
随着n的增大,该问题的解也迅速增大,使用列举的方法进行求解显然是不明智的。数学家欧拉给了我们一种解决该问题的递推公式&#