递归简论学习
来源:互联网 发布:广西移动重大故障知乎 编辑:程序博客网 时间:2024/06/05 11:57
1 递归必须满足的四条基本法则
1、基准情形。必须总有某些基准情形,无需递归就可以求出解;
2、不断推进。对于需要通过递归来求解的问题,递归调用的过程必须是朝着基础情形在不断演进;
3、设计法则。假设所有的递归调用都能运行。只有满足这样一条假设前提条件,我们才会不必关系计算机的簿记过程细节,也不必关心实际的调用过程细节,但也应记住簿记的系统开销代价,不应该将其作为简单for循环的替代物;
4、合成效益法则。在求解一个问题的同一实例时,切勿在不同的递归调用中做重复的工作。例如计算斐波那契数列,就不适合用递归来实现;
情形一:不满足法则1、2
int Find(int N){ if(N == 0) return 0; else return Find(N/3+1)+1;}情形二:不满足法则4
long Fib(int N){ if(N== 1) return 1; else return Fib(N-2) + Fib(N-1);}
2 习题练习
1、编程实现选择问题,即寻找N个元素中的第K个最大者,先实现一个最简陋的,后面学会更好算法来优化它
template<typename T>T FindKMax(T* p,int count,int K){ //先降序排列 for(int i = 0 ; i < count-1;i++) {for(int j = i+1;j<count;j++){ T temp; if(p[i]<p[j]) { temp= p[i]; p[i] = p [j]; p[j] = temp; } } } //取第K个元素 return p[K];}
0 0
- 递归简论学习
- 学习递归,理解递归
- 递归学习
- 递归简论
- 递归简论
- 递归简论
- 算法递归简论
- 递归简论
- 递归简论
- 递归简论
- 递归与尾递归学习
- 递归学习(Day3)
- 递归函数的学习
- 学习笔记-递归,重载
- 递归算法学习
- 递归学习笔记
- 递归学习(一)
- 递归学习(二)
- 天仙配
- Java Web程序员学习方向
- 第二节 在Xocde中跑起OpenCV
- 11.11工作日志
- Android线程间通信(二):MessageQueue(上)
- 递归简论学习
- AJAX—核心XMLHttpRequest对象
- Struts2应用开发步骤
- QQ好友列表(处理头部控件的点击)viewForHeaderInSection:
- Hadoop1.x程序升级到Hadoop2.x需要的依赖库,Cannot initialize Cluster.Please check your configuration for ma
- Android LayoutAnimation
- Error While Loading Shared Libraries, Cannot Open Shared Object File
- 20151111,微软11月11日发布12个安全补丁
- hive学习笔记(1)