《数据结构与算法分析》学习笔记(一)——递归思想!

递归的四条基本法则!

一、基准情形:

      必须总有某些基准情形,它无须递归就能解出。

      理解起来很简单,递归递归,就是不停的调用同一段函数代码,如果不设置一个出口,那便没有办法停止递归而导致内存爆满而程序崩溃。

      e.g

 1 int Bad(unsigned int N)
 2 {
 3       if(N==0)
 4    {
 5        return 0;
 6    }
 7       else
 8    {
 9       return Bad(N/3+1)+N-1;
10    }
11 }

       当N=1的时候就没有出口,而是不断的递归N=1这段代码。

二、不断推进:

       每次递归都必须朝着基准的方向前进,就像查英译英的字典一样,查一个我们不会的词的时候又在解释中碰到不认识的词,就要继续查下去,但最后,肯定有一个我们不需要查就认识的单词,此时倒退过来就能明白最初查的词的意思,所以递归一定要朝基准情况前进。

三、设计法则:

      即在需求内,所有的可能都要实现。

四、合成效益法则:

      因为系统每次递归是要通过开一个固定大小的不相同的内存空间的,所以尽力保证在求解同一问题的同一实例时,切勿在不同的递归调用钟做重复性的工作。

原文地址:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/3889961.html