1.递归算法是一种直接或者间接调用自身的算法。
2.递归过程一般通过函数或子过程来实现,是把问题转化为规模缩小了的同类问题的子问题,在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
3.递归调用的过程当中系统为每一层的返回点,局部量等开辟了栈来存储。
递归过程过多容易造成栈溢出。
递归的要求时用在规模上有所减小;第二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输出);第三是在递归调用过程都是有条件的。
例如一个汉诺塔问题:
直接上代码:
Void han(int n,char one,char two,char three)
{
If(n==1)
Printf("%c->%c\n",one,three);
Else
{
han(n-1,one,three,two);
Printf("%c->%c\n",one,three);
han(n-1,two,one,three);
}
}