数据结构递推关系

Data Structures recurrence relation

我需要帮助和你的提示来回答这类问题,因为我迷路了...... 这是问题: 有n封信,每封信都有自己的邮箱。 f(n) = 将每封信放入错误邮箱的方法数。 我需要找到一个递归算法。

到目前为止,这是我的想法: f(n = 1) = 0 f(n = 2) = 1 对于第 n 封信,您有 (n-1) 个选项可以将这封信放入错误的邮箱中。 所以也许它应该是这样的: n-1 * (f(n-1))

不知道自己思考的方向对不对,应该多想还是少想。 另外,如果您有可以帮助我的资源,我将非常高兴。 这是选项: (第四个选项是 none 的答案是正确的) click here to see the answers

考虑 n=4 案例。一开始我们有四个盒子。我们需要从 n-1 个选项中选择字母 1 的方框。为了便于解释,假设我们选择了框 2。

1  2  3  4
  /
1  2  3  4

现在有两种可能。

  1. 信件 2 被邮寄到第一个盒子里。然后,我们剩下的盒子和信件都是 3 和 4。所以,有f(2)种方法。

  2. 字母2被寄到一个不是1的盒子里。那么,我们要寻找一种排列字母1、3、4和盒子2、3、4的方法,有一个条件字母 1 和 2 没有配对。这与用同一组数字排列三个字母和方框的情况相同。所以有f(3)种方式

概括此逻辑,f(n) = (n-1) * (f(n-2) + f(n-1))