Professional Documents
Culture Documents
选修 oracle递归算法
选修 oracle递归算法
摘要
所谓递归算法,是指把问题转化为规模缩小了
的同类问题的子问题。然后递归调用函数 ( 或过程 )
来表示问题的解。递归过程一般通过函数或子过程
来实现,本文主要研讨了递归算法在 oracle 数据库
树形结构表中的查询应用技术。
数学中的递归算法表达式:
1 n 0(终止条件,递归出口)
n!
n*(n-1)! n>0(递归体)
递归算法的执行过程分递推和回归两个阶段。
在递推阶段,把较复杂的问题 ( 规模为 n) 的
求解推到比原问题简单一些的问题 ( 规模小
于 n) 的求解。
在回归阶段,当获得最简单情况的解后,逐
级返回,依次得到稍复杂问题的解
树形结构
在树形结构中,树根结点没有前驱结点,其余每个结点有且只有一
个前驱结点。叶子结点没有后续结点,其余每个结点的后续结点数可
以是一个也可以是多个,在客观世界中,树形结构的情况不胜枚举:
公司部门关系、电信业务环节等等
回溯
查找 empno=7369 的员工的所有上级领导
select ename,empno from emp
connect by empno=prior mgr
start with empno=7369;
回归
查找 empno=788 的员工的所有下属
递归调用过程中,每一次发生调用系统都要将
返回地址、局部变量等信息入栈保存,因此,
递归程序的运行效率较低,而且递归次数过多
还容易造成栈溢出