Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 7

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 的员工的所有下属

 select ename,empno from emp


 connect by prior empno= mgr
 start with empno=7788;
递归算法的缺点

 递归调用过程中,每一次发生调用系统都要将
返回地址、局部变量等信息入栈保存,因此,
递归程序的运行效率较低,而且递归次数过多
还容易造成栈溢出

You might also like