当前课程知识点:数据结构(上) > 第一章 绪论(下) > (e)迭代与递归 > 01-E-4: 递推方程
如果递归跟踪是几何
那么递推方程就是代数
我们要从递推的角度
来看整个算法的过程
具体来讲 按照减而治之的策略
为了求解一个规模为n的问题
我们这里需要去递归的求解
规模为n-1的问题
然后再在O(1)的时间内
完成它和那个平凡问题的解的合并
当然 最终的这个递归基本身
我们也需要记下来 它是O(1)的
有了这些分析以后
我们就可以把它们整理成
这样一种递推方程的形式
具体来说就是
T(n)=T(n-1)+O(1)
我们说过 这里可以解释为
为了求解规模为n的问题
所需要的时间
可以理解为是
首先花了T(n-1)的时间
去求解了一个规模为(n-1)的问题
然后再花上O(1)的时间
将它的解和平凡问题的解合并
从而得到原问题的解
这个我们就管它叫作
递推式或者叫作递推方程
那么这种方法
可以很形象地比喻作是
解微分方程
什么叫解微分方程呢?
也就是说 我们现在还不知道
但是我们需要去求解
一个方程的显式形式
但是目前我们知道的只是它
以一个微分形式给出的隐式表达
所以不妨把这个隐式的表达
作为方程列出来
再加上这里的边界条件
通常情况下
就应该能够解出唯一的解
确实如此 就这个问题而言
我们可以来求解一下
为此 只需在这个递推式的左右
分别地减n
所以这边是减n
而这边呢 因为原来有一个1
所以就变成了减(n-1)
这样经过一个转换以后
它大概就是T(n)-n
而这边呢 是T(n-1)减掉(n-1)
当然这里的点点点 意味着说
它肯定也等于T的(n-2)
减掉(n-2)
以及T的(n-3)减掉(n-3)
诸如此类地
最后 肯定会回到T的(2)减掉2
T的(1)减掉1
以及T的(0)减掉看不见的0
这说明什么呢?
这说明我们已经得到了
一个近乎显式的一个表达
最后一步 我们只需把这个n
再重新挪到方程的右边
我们就得到了T(n)=O(n)
和我们刚才的那些推断
殊途同归
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)计算
--演示
--(a)计算--作业
-(b)计算模型
-(b)计算模型--作业
-(c)大O记号
-(c)大O记号--作业
-(d)算法分析
-(d)算法分析--作业
-(e)迭代与递归
-(e)迭代与递归--作业
-(xc)动态规划
-- 演示
-(xc)动态规划--作业
-本章测验--作业
-(a)接口与实现
--02A-5 复制
-(a)接口与实现--作业
-(b)可扩充向量
-(b)可扩充向量--作业
-(c)无序向量
--02C-1 概述
--02C-3 插入
--02C-6 查找
--02C-8 遍历
-(c)无序向量--作业
-(d1)有序向量:唯一化
-(d1)有序向量:唯一化--作业
-(d2)有序向量:二分查找
-(d2)有序向量:二分查找--作业
-(d3)有序向量:Fibonacci查找
-(d3)有序向量:Fibonacci查找--作业
-(d4)有序向量:二分查找(改进)
-(d4)有序向量:二分查找(改进)--作业
-(d5)有序向量:插值查找
-第二章 向量(下)--(d5)有序向量:插值查找
-(e)起泡排序
--02E-2 改进
--02E-3 反例
-(e)起泡排序--作业
-(f)归并排序
-(f)归并排序--作业
-本章测验--作业
-(a)接口与实现
--03A-4 实现
-(a)接口与实现--作业
-(b)无序列表
--03B-2 查找
-(b)无序列表--作业
-(c)有序列表
--03C-3 查找
-(c)有序列表--作业
-(d)选择排序
--03D-1 构思
--03D-2 实例
--03D-3 实现
--03D-4 推敲
--03D-6 性能
-(d)选择排序--作业
-(e)插入排序
--03E-1 经验
--03E-2 构思
--03E-3 对比
--03E-4 实例
--03E-5 实现
-(e)插入排序--作业
-(xd)习题辅导:LightHouse
-本章测验--作业
- (a)栈接口与实现
--04A-1 栈
--04A-2 实例
--04A-3 实现
- (a)栈接口与实现--作业
-(c1)栈应用:进制转换
-第四章 栈与队列--(c1)栈应用:进制转换
-(c2)栈应用:括号匹配
-(c2)栈应用:括号匹配--作业
-(c3)栈应用:栈混洗
-第四章 栈与队列--(c3)栈应用:栈混洗
-(c4)栈应用:中缀表达式求值
-(c4)栈应用:中缀表达式求值--作业
-(c5)栈应用:逆波兰表达式
-第四章 栈与队列--(c5)栈应用:逆波兰表达式
-(d)队列接口与实现
--04D-1 接口
--04D-2 实例
--04D-3 实现
-第四章 栈与队列--本章测验
-(a)树
--05A-1 动机
--05A-2 应用
-(a)树--作业
-(b)树的表示
--05B-2 父亲
--05B-3 孩子
-第五章 二叉树--(b)树的表示
-(c)二叉树
-(c)二叉树--作业
-(d)二叉树实现
-(d)二叉树实现--作业
-(e1)先序遍历
-(e1)先序遍历--作业
-(e2)中序遍历
-第五章 二叉树--(e2)中序遍历
-(e4)层次遍历
-第五章 二叉树--(e4)层次遍历
-(e5)重构
-(e5)重构--作业
-本章测验--作业
-(a)概述
-(a)概述--作业
-(b1)邻接矩阵
-(b1)邻接矩阵--作业
-(c)广度优先搜索
--06C-2 策略
--06C-3 实现
--06C-5 实例
-(c)广度优先搜索--作业
-(d)深度优先搜索
--06D-1 算法
--06D-2 框架
--06D-3 细节
-(d)深度优先搜索--作业
-第六章 图--本章测验