Recursive

 

知识是相互关联的。

递归是一种形式或者叫做机制。

每次调用都伴随着参数的改变,参数的取值与子问题相对应,这样,递归就可以用来暴力地枚举所有可能的情况的(也就是搜索?)。

可以用(线性递归、二分递归、多分支递归)不同的递归形式,实现(遍历、分治)等算法策略。

 分治——凡治众如治寡,将原问题分解成(规模更小的)子问题,用递归机制求解。

递归基:递归的终止条件,平凡情况。

线性递归:每一递归实例对自身至多调用一次,递归实例间是线性的次序关系。

  线性递归模式往往对应减而治之的算法策略,递归每深入一层,待求解的问题的规模就缩减一个常数,直至最终蜕化成一个简单的小问题。

多向递归:每个递归实例可能有多个递归的方向,但只能选择其中一个,各层次上的递归实例仍是线性次序关系,还属于线性递归模型。

多路递归:每一实例做多次递归,不局限于是对原问题的划分。递归形式的线段树写法就是为了满足需要,采用递归的形式。(结合实际需要考虑吧)

    按照调用关系和次序,形成层次结构。

递归树:代填

优化策略:记忆或者动规。

---------------------------

递归:定义一个流程或过程。

每次调用会产生一个伴随池,记录过程中的临时变量,同时系统栈记录现场(子过程调用前,原过程的参数和行号(调用子过程时原过程的进程位置))

栈:先进后出

栈:保存所有信息(包括行号)保存现场,还原现场,顺序结构,一行一行跑。从哪里调用之后返回哪里,接着向下运行。

流程,样本量处理流程是一致的


调用子过程,只是样本域不一样,共享流程
basecase:递归终止条件,不需要再划分子问题

 


 

 ref:《程序员的数学》

2018/12/2

递归,上下层间的联系(递推关系),找出递推结构(递推关系)

先考虑小的问题,从中找出重复相似的规律(模拟一下,归纳)

ps:

从整体问题中隐去部分问题

判断剩余问题是否和整体问题是同类问题

从n层的整体问题中隐去部分问题

判断剩余部分是否是n-1层的问题

恩...n层怎么由前面的n-x层组成,还可对n层的组成进行分类(组合数,帕斯卡三角组合数)


 

转载于:https://www.cnblogs.com/SUMaywlx/p/9058612.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值