📄 6.1.2b.htm
字号:
<html>
<head>
<title>编译原理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link type="text/css" rel="stylesheet" href="../css/specification.css">
</head>
<BODY>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.1.2.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.1.3.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>    </td>
<td class="content">
<p>
一个过程是<B>递归</B>的,如果同一过程的一次新的活动可以在前面活动结束以前开始。图6.2表明,控制从图6.1的(24)行进入quicksort(l,9)的活动,即在程序的执行的早期进入的,但在程序快结束时才离开这个活动。在此期间,还有一些其它quicksort的活动,所以quicksort是递归的。
</td></tr></table>
<table><tr><td>    </td>
<td class="content">
<p>
1.每一个结点代表一个过程的活动;
<p>
2.根结点代表主程序的活动;
<p>
3.代表a的结点是b结点的父结点当且仅当控制从活动a进入活动b;
<p>
4.结点a在结点b的左边当且仅当a的生存期发生在b的生存期之前。
</td></tr></table>
<table><tr><td>    </td>
<td class="content">
<p>
由于一个结点代表一个唯一的活动,并且每一个活动只能由一个结点表示,所以当控制处于某个活动之中时,而这个活动是由某个结点表示的,我们就可以很方便地运用活动树来讨论正在这个结点上的控制。
</td></tr></table>
<table><tr><td>    </td>
<td class="content">
<p>
<B>例6.1</B>图6.3中活动树是从图6.2中的输出构造出来的。为了节省空间,只表示出每一个过程名字的第一个字母。树的根结点代表整个程序sort。在执行sort的过程中,有一个readarray的活动,它由根结点的第一个子结点代表,标记为r。根结点的第二个子结点代表活动quicksort(1,9)。在这个活动期间,调用partition和quicksort(见图6.1 的(16)—(18)行),它们分别由活动p(1,9),q(1,3)和q (5,9)表示。注意,活动q (1,3) 和q(5,9)是递归的,并且它们在q(1,9)结束以前开始并结束。其中假定p(1,9),p(1,3),p(2,3),p(5,9)和p(7,9)的返回值分别为4,1,2,6和8。
</td></tr></table>
<center><img src="6_3_new.gif" width="498" height="228" ></center>
<table>
<tr>
<td><font class="yanshi">     观看演示 
<td><font color=blue onmouseover="javascript:style.cursor='hand'" onclick="javascript:open('applets/test6_1/Page1.htm','_blank','menu=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,copyhistory=no,left=100,top=100,width=800,height=600')">活动树演示</font></td>
<td><img src="../images/yanshi.gif"></img></td>
</table>
<br>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.1.2.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.1.3.htm'"></img></td>
</tr>
</table>
</BODY>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -