递归:
1、一个构成递归调用的函数
void DonotRunMe()
{ DonotRunMe(); }
简言之:递归就是“自己调用自己”。
2、递归的特点:
1)先从大到小,再从小到大;
2)每个步骤要干的事情都是类似的,只不过其规模“小一号”;
3)必须要保持递归调用的过程可以终结。
3、递归编程的模式:
1)每个递归函数的开头一定是判断递归结束条件是否满足的语句(一般是if语句);
2)函数体一定至少有一句是“自己调用自己”的。
3)每个递归函数一定有一个控制递归可以终结的变量(通常是作为函数的参数而存在)。
4)每次自己调用自己时,此变量会变化(一般是变小),并传送给被调用的函数。
4、递归 vs 递推:
1)“递归”是“由后至前再回来”,要求第n项,先求第n-1项,……,倒推到前面的可计算出的某项,然后再返回。
2)递推”是“从前到后”,先求第1项,然后,在此基础上求第2项,第3项,直至第n项,通常可以直接使用循环语句实现