理论上的概念
- 1.函数的主要成分是一个循环,则此种解法叫做迭代,而当函数是通过不断调用自己解决问题的,那么此种解法就叫做递归。
- 2.递归既浪费时间,又浪费空间,所以递归的效率很低,在要求高性能、低内存的算法上递归不适用。要转换为迭代方法。
- 3.在迭代函数中必须有程序员自己完成的工作(参数入栈,出栈,转移,返回等)在递归函数中交由系统啦实现。通过隐藏某些实现细节,用时间和空间代价减少了程序设计的工作量,总的来说就是递归思路清晰,程序简洁。
- 4.尾递归是完全可以转换为while循环实现的,因为尾递归就相当于在程序的尾部把递归函数用程序不断替代,while完全可以实现。
- 5.递归函数内部一般由两部分定义,第一部分是终结情况,第二部分是递归步骤。
- 6.递归程序中的递归部分对本层次的程序功能不产生影响(如果递归函数中没有引用传递),分析程序的功能时对其中的递归部分可以只意会,不深究。
求解递归问题的心得:
1某些问题的求解,递归函数设计的正确性很大程度上取决于函数申明的设计(函数的参数以及函数的意义的定义)如hanoi问题。这种问题貌似在函数体中直接应用递归定义,就可以方便的实现递归过程,得到结果。
2.还有一些问题,递归方法比较复杂,函数体中不单纯的只有递归的存在。递归在函数体中只是作为解决方法的一个步骤(只是一小段代码)。求解问题的思想是逐步的,递归只是能够更好的实现这种逐步求解,例如8皇后问题。