32、递归关系与算法分析

递归关系与算法分析

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 收到
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值