递归关系与算法分析
1. 递归关系问题引入
在一些实际场景中,会遇到递归关系的问题。例如,有若干人订购光盘,名字和订单代码录入电子表格后,名字排序但订单代码未变,导致无人收到正确光盘。设 (D_n) 表示 (n) 个人都收到错误订单的方式数,要证明序列 (D_1, D_2, \cdots) 满足递归关系 (D_n = (n - 1)(D_{n - 1} + D_{n - 2}))。
2. 问题分析与求解
- 具体例子分析
- 当 (n = 1) 时,一个人必然收到正确订单,所以 (D_1 = 0)。
- 当 (n = 2) 时,有一种方式让所有人收到错误订单,即人 1 收到订单 2,人 2 收到订单 1,所以 (D_2 = 1)。
- 当 (n = 3) 时,人 1 收到订单 2 或 3。若人 1 收到订单 2,人 2 不能收到订单 1,只能收到订单 3,人 3 收到订单 1,即 (2, 3, 1);若人 1 收到订单 3,人 3 不能收到订单 1,只能收到订单 2,人 2 收到订单 1,即 (3, 1, 2),所以 (D_3 = 2)。验证递归关系:(D_3 = 2 = 2(1 + 0) = (3 - 1)(D_2 + D_1))。
- 当 (n = 4) 时,人 1 收到订单 2、3 或 4。若人 1 收到订单 2,若人 2 收到订单 1,则人 3 收到订单 4,人 4 收到订单 3,即 (2, 1, 4, 3);若人 2 不收到订单 1,有 (2, 3, 4, 1) 和 (2, 4, 1, 3) 两种情况。同理,人 1 收到
超级会员免费看
订阅专栏 解锁全文
1229

被折叠的 条评论
为什么被折叠?



