递归的定义:
若一个对象部分地包含它自己,或用自己给它自己定义,则这个对象是递归的(例:链表中结点的指针域)
若一个过程直接地或间接地调用自己,则称这个过程是递归的过程
例:递归求n的阶乘
long Fact(long n) {
if(n == 0)
return 1;
else
return n*Fact(n-1);
}
递归问题—用分治法求解:
分治法:对于一个较为复杂的问题,能够分解成几个相对简单的且解法相同或类似的子问题来求解
必备的三个条件:
分治法求解递归问题算法的一般形式:
void p(参数表) {
if(递归结束参条件) 可直接求解步骤; ----基本项
else p(较小的参数); ----递归项
}
调用前,系统完成: