最近做算法题的时候碰到需要用递归算法实现的问题就会卡壳,鉴于此,下面总结一下递归算法的步骤及适用环境。
递归算法主要可以分为以下几步:
1. 判断条件是否返回上层递归。
2. 递归调用产生子结构。
3. 对当前节点的访问操作。
举个简单的例子
二叉树先根遍历
void pre_order(TreeNode * Node)
{
if(Node == NULL)
return;//1
printf("%d ", Node->data);//2
pre_order(Node->left);//3
pre_order(Node->right);//3
}
目前我遇到的所有可以用递归算法解决的问题都必须包含着这三个步骤,其中步骤二三顺序可以颠倒。
本人水平有限,大家看看笑过就好。