递归笔记
2016-01-27 13:54
190 查看
1.递归满足的条件:
1)必须能够鉴别出一个简单情景,且该情景的答案是容易确定的。
2)必须能够确认一个递归的分解方式,能够将问题的复杂实例分解为更小的、具有相同形式的问题。
2.递归函数的模板:
![](http://img.blog.csdn.net/20160127135504324?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3.交互递归:为了做到递归,函数必须在其执行中的某点调用自己。如果某个函数被细分成几个子函数,那么可以在更深的嵌套层次上应用递归调用。例如,如果函数f调用g,反过来g又调用f,这些函数的调用仍被看作是递归的。因为函数互相调用,所以称为交互递归。
4.利用包装函数解决原问题与子问题不对称的情况:将原问题定义为一个包装函数,然后调用另一个辅助函数来解决更普通的问题。
5.如何避免递归中常见的错误:
l 检验递归实现是不是以检查简单情景开始。
l 是否正确地解决了简单情景
l 递归分解是否使问题更简单了
l 简化的过程是不是逐渐地达到了简单情景,或者是不是遗漏了一些可能性
l 函数中的递归调用是不是表示了在形式上和初始问题真的完全相同的子问题
l 是否能够将子问题重新组装称为原问题?
6.回溯问题一般都可以用递归的形式解决,函数模板:
![](http://img.blog.csdn.net/20160127135518934?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
7.链表的递归操作:
1)必须能够鉴别出一个简单情景,且该情景的答案是容易确定的。
2)必须能够确认一个递归的分解方式,能够将问题的复杂实例分解为更小的、具有相同形式的问题。
2.递归函数的模板:
3.交互递归:为了做到递归,函数必须在其执行中的某点调用自己。如果某个函数被细分成几个子函数,那么可以在更深的嵌套层次上应用递归调用。例如,如果函数f调用g,反过来g又调用f,这些函数的调用仍被看作是递归的。因为函数互相调用,所以称为交互递归。
4.利用包装函数解决原问题与子问题不对称的情况:将原问题定义为一个包装函数,然后调用另一个辅助函数来解决更普通的问题。
5.如何避免递归中常见的错误:
l 检验递归实现是不是以检查简单情景开始。
l 是否正确地解决了简单情景
l 递归分解是否使问题更简单了
l 简化的过程是不是逐渐地达到了简单情景,或者是不是遗漏了一些可能性
l 函数中的递归调用是不是表示了在形式上和初始问题真的完全相同的子问题
l 是否能够将子问题重新组装称为原问题?
6.回溯问题一般都可以用递归的形式解决,函数模板:
7.链表的递归操作:
相关文章推荐
- cdrtools-3.02 arm7 交叉编译通过
- 【码农流水账】一个码农的成长05
- openstack运维实战系列(十二)之nova aggregate资源分组
- python系列之 - 装饰器
- 碎雨目录
- docker学习笔记(一)——安装
- python中的比较
- 返回键 隐藏、、收起键盘textView|textField
- Linq Group By 获取分组内信息
- 电脑爱好者GHOSTXPSP32016新春版V1.0
- Nginx基础入门之proxy反向代理常用配置项说明
- 如何切分id串并得到name串
- BZOJ 1052: [HAOI2007]覆盖问题
- 确定比赛名次(拓扑序)
- 134 uml 类图
- EK中fromCharCode和parseInt的配合使用
- 练习-checkbox 全选 ,反选, 单选,以及取值
- 位运算符
- gridView中合并单元格
- Xcode 7测试化工具XCTestCase