清明时节雨纷纷,递归分治欲断魂

说起数据结构,大家肯定都不陌生,今天我们一起来聊下递归分治思想,下面是我在学习过程中做的笔记,可能不是很全面,希望大家能够多多担待。
1、递归算法是效率比较低的一种算法,不到万不得已请不要用递归
2、For,while,do-while都属于迭代算法,可以用来替代递归
3、递归是函数在调用自己的意思,
4、斐波那契数列的递归实现:当n=0时,F(n)=0;当n=1时,F(n)=1;当n>1时,F(n)=F(n-1)+F(n-2)
5、递归函数就是一个直接调用或者通过一系列的调用语句间接的调用自己的函数
6、写递归程序最怕的是陷入永不结束的无穷递归中。所以每个递归定义必须至少有一个条件,当这个条件满足时则递归不在进行,即函数不再调用自身而返回
7、迭代和递归的区别:迭代使用的是循环结构,递归使用的是选择结构
8、递归的优点:使用递归能使程序的结构更加清晰,更简洁,更容易理解,从而减少读懂代码的时间
9、缺点:大量的递归调用会建立函数的副本,会消耗大量的时间和内存,而迭代则不需要此种付出。
10、递归的调用分为调用和回退阶段,递归的回退顺序是它调用顺序的逆序。
11、分治思想在算法设计中很常见,当一个问题规模较大且不易求解的时候,就可以考虑将问题分成几个小的模块,逐一解决
12、分治思想和递归算是亲兄弟,因为采用分治思想处理问题,其各个小模块通常具有和大模块相同的结构,这种特性也使递归技术有了用武之地
13、折半查找的基本思想:减小查找序列的长度,分而治之的进行关键字的查找
14、折半查找的实现过程:先确定查找记录的所在范围,逐渐缩小这个范围,直到找到该记录或查找失败为止。
15、汉诺塔:把64个盘子从X柱子借助Y柱子移动到Z柱子上
(1)先将63个盘子移动到Y上,确保大盘在上小盘在下
(2)再将最底下的第64个盘子从X柱子上移动到Z柱子上
(3)最后将63个盘子从Y柱子上移动到Z柱子上
注:第一步和第三步都需要借助第三个柱子,也就是需要将盘子在三个柱子中移动以保证大的在下,小的在上
以上就是我对这块的理解与认识,希望能够帮助有需要的人。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章