一、递归的思想:
就是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。另外这个解决问题的函数必须有明显的结束条件,这样就不会产生无限递归的情况了。
二、递归的条件:
1、可以通过递归调用来缩小问题规模,且新问题与原问题有着相同的形式。(自身调用)
2、存在一种简单情境,可以使递归在简单情境下退出。(递归出口)
三、递归的要素:
1、一定有一种可以退出程序的情况;
2、总是在尝试将一个问题化简到更小的规模
3、父问题与子问题不能有重叠的部分
四、递归算法的格式:
func( mode){
if(endCondition){ //递归出口 end;
}else{
func(mode_small) //调用本身,递归 }
}
五、递归的排序:
归并排序也是递归的典型应用,其思想:将序列分为若干有序序列(开始为单个记录),两个相邻有序的序列合并成一个有序的序列,以此类推,直到整个序列有序。