⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch04s03.html

📁 优秀的java程序开发软件方式与方法,对大家开发程序的时候有指导性帮助
💻 HTML
📖 第 1 页 / 共 2 页
字号:
        CpsFib.prnRetF(n, sf, nextOp);    }}class RetFCont extends Continuation {    RetFCont(StackFrame sf) {        super(sf);    }        void go() {        CpsFib.retF(sf, nextOp);    }}public class CpsFib {    static void cpsAdd(int a, int b, StackFrame sf,             Continuation cont) {        cont.go(a + b);    }    static void cpsPrint(int n, int f, StackFrame sf,             Continuation cont) {        System.out.println("Fib(" + n + ") = " + f);        cont.go();    }    static void fib(int n, StackFrame sf, Continuation cont) {        FibStackFrame fsf = (FibStackFrame)             sf.prepend(new FibStackFrame());        fsf.n = n;                if (fsf.n &lt;= 1) {            cpsPrint(fsf.n, fsf.n, fsf,                 cont.prepend(new RetNCont(fsf)));        } else {            fib(n - 1, fsf,                 cont.prepend(new FibAddPrnRetFCont(fsf)));        }    }    static void retN(StackFrame sf, Continuation cont) {        cont.go(((FibStackFrame) sf).n);    }    static void fibAddPrnRetF(int n, StackFrame sf,             Continuation cont) {        FibStackFrame fsf = (FibStackFrame) sf;        fsf.f1 = n;        fib(fsf.n - 2, fsf, cont.prepend(new AddPrnRetFCont(fsf)));    }    static void addPrnRetF(int n, StackFrame sf,             Continuation cont) {        FibStackFrame fsf = (FibStackFrame) sf;        fsf.f2 = n;        cpsAdd(fsf.f1, fsf.f2, sf,             cont.prepend(new PrnRetFCont(fsf)));    }    static void prnRetF(int n, StackFrame sf, Continuation cont) {        FibStackFrame fsf = (FibStackFrame) sf;        fsf.f = n;        cpsPrint(fsf.n, fsf.f, sf,             cont.prepend(new RetFCont(fsf)));    }    static void retF(StackFrame sf, Continuation cont) {        FibStackFrame fsf = (FibStackFrame) sf;        if (fsf.n == 4) {            CpsFib.cont = cont;            System.out.println("Continuation recorded.");        }        cont.go(fsf.f);    }    static Continuation cont;        public static void main(String[] args) {        StackFrame sf = new StackFrame();        fib(5, sf, new TerminateCont(sf));        System.out.println("Rerun continuation..");        cont.go(3);        System.out.println("Rerun continuation..");        cont.go(1000);    }}</pre><p>&#36825;&#27573;&#20195;&#30721;&#27604;&#22522;&#20110;Stack&#30340;&#35201;&#40635;&#28902;&#22810;&#20102;&#65292;&#22240;&#20026;CPS&#31243;&#24207;&#26412;&#36523;&#23601;&#38750;&#24120;&#38590;&#25026;&#12290;&#25105;&#20204;&#26469;&#31616;&#35201;&#30475;&#30475;&#23427;&#30340;&#36816;&#20316;&#21644;&#32467;&#26524;&#12290;</p><p>&#22312;retF()&#20013;&#65292;&#22914;&#26524;n=4&#30340;&#35805;&#25105;&#20204;&#23601;&#20250;&#25226;&#24403;&#21069;continuation&#32426;&#24405;&#22312;&#20840;&#23616;&#21464;&#37327;CpsFib.cont&#20013;&#12290;&#20989;&#25968;fib()&#36820;&#22238;&#21518;&#65292;main()&#20250;&#20808;&#35843;&#29992;cont.go(3)&#65292;&#28982;&#21518;&#35843;&#29992;cont.go(1000)&#12290;&#31532;&#20108;&#20010;&#25805;&#20316;&#30340;&#24847;&#24605;&#26159;&#65306;&#20174;&#32426;&#24405;&#19979;&#26469;&#30340;continuation&#22788;&#32487;&#32493;&#36816;&#34892;&#65292;&#20294;&#26159;&#20551;&#35013;refF()&#22312;&#27492;&#22788;&#36820;&#22238;1000&#65288;&#27491;&#24120;&#24773;&#20917;&#19979;fib(4)&#24212;&#35813;&#36820;&#22238;3&#65289;&#12290;&#19978;&#38754;&#31243;&#24207;&#30340;&#36755;&#20986;&#22914;&#19979;&#65306;</p><pre class="programlisting">Fib(1) = 1Fib(0) = 0Fib(2) = 1Fib(1) = 1Fib(3) = 2Fib(1) = 1Fib(0) = 0Fib(2) = 1Fib(4) = 3Continuation recorded.Fib(1) = 1Fib(0) = 0Fib(2) = 1Fib(1) = 1Fib(3) = 2Fib(5) = 5Rerun continuation..Fib(1) = 1Fib(0) = 0Fib(2) = 1Fib(1) = 1Fib(3) = 2Fib(5) = 5Rerun continuation..Fib(1) = 1Fib(0) = 0Fib(2) = 1Fib(1) = 1Fib(3) = 2Fib(5) = 1002</pre><p>&#27880;&#24847;&#27604;&#36739;Continuation recorded&#20043;&#21518;&#30340;&#19968;&#27573;&#36755;&#20986;&#21644;Rerun continuation..&#20043;&#21518;&#30340;&#20004;&#27573;&#36755;&#20986;&#12290;&#23427;&#20204;&#20960;&#20046;&#26159;&#19968;&#26679;&#30340;&#65292;&#20294;&#26159;&#31532;&#20108;&#27425;&#25105;&#20204;&#35753;fib(4)&#36820;&#22238;&#26159;&#25105;&#20204;&#35753;&#23427;&#36820;&#22238;&#20102;1000&#65292;&#25152;&#20197;&#26368;&#21518;&#24471;&#21040;Fib(5)=1002&#12290;</p><p>&#36825;&#27573;&#20195;&#30721;&#26159;&#22914;&#20309;&#23436;&#25104;&#19981;&#21487;&#33021;&#30340;&#20219;&#21153;&#30340;&#65311;&#25105;&#20204;&#36827;&#34892;&#30340;&#20027;&#35201;&#20462;&#25913;&#22914;&#19979;&#65306;</p><div class="orderedlist"><ol type="1"><li><p>&#39318;&#20808;&#65292;&#27599;&#20010;&#20989;&#25968;&#24403;&#28982;&#22810;&#25509;&#21463;&#19968;&#20010;continuation&#20026;&#21442;&#25968;&#12290;&#19981;&#36807;&#65292;&#25105;&#20204;&#21448;&#22686;&#21152;&#20102;&#19968;&#20010;&#21442;&#25968;&#65292;StackFrame&#12290;&#21407;&#31243;&#24207;&#20013;&#30340;&#25152;&#26377;&#26412;&#22320;&#21464;&#37327;&#37117;&#25918;&#21040;&#36825;&#20010;StackFrame&#20013;&#21435;&#20102;&#12290;&#35760;&#24471;&#26412;&#25991;&#26368;&#26089;&#30340;CPS&#20363;&#23376;&#21527;&#65311;&#24403;&#26102;&#25105;&#20204;&#25226;&#26412;&#22320;&#21464;&#37327;&#37117;&#21464;&#25104;&#20102;&#20840;&#23616;&#21464;&#37327;&#12290;&#37027;&#31181;&#20570;&#27861;&#27604;&#36739;&#31616;&#21333;&#65292;&#20294;&#26159;&#26377;&#36882;&#24402;&#20989;&#25968;&#26102;&#25105;&#20204;&#23601;&#19981;&#24471;&#19981;&#33258;&#24049;&#20570;&#19968;&#20010;stack&#20102;&#12290;</p></li><li><p>&#27880;&#24847;&#25105;&#20204;&#26159;&#22914;&#20309;&#22788;&#29702;&#36825;&#20010;stack&#30340;&#12290;&#27599;&#20010;StackFrame&#26377;&#19968;&#20010;&#25351;&#38024;&#25351;&#21521;&#19979;&#19968;&#20010;StackFrame&#65292;&#25152;&#20197;&#19968;&#20010;StackFrame&#20854;&#23454;&#23601;&#34920;&#31034;&#20102;&#19968;&#20010;Stack&#65292;&#24182;&#19988;&#25105;&#20204;&#30340;&#25972;&#20010;Stack&#26159;&#20445;&#23384;&#22312;Continuation&#30340;&#12290;&#27880;&#24847;&#21040;&#20989;&#25968;fib()&#20250;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;StackFrame&#65292;&#20854;&#20182;&#30340;&#20989;&#25968;&#21017;&#20250;&#25226;&#36825;&#20010;StackFrame&#19968;&#27493;&#19968;&#27493;&#20256;&#19979;&#21435;&#65292;&#30452;&#21040;retN()&#21644;retF()&#20004;&#20010;&#20989;&#25968;&#12290;&#22914;&#26524;fib()&#35843;&#29992;fib()&#30340;&#35805;&#26032;&#21019;&#24314;&#30340;StackFrame&#20250;&#25351;&#21521;&#21407;&#26469;&#30340;StackFrame&#65292;&#25152;&#20197;&#25105;&#20204;&#23454;&#38469;&#19978;&#22312;heap&#37324;&#21019;&#36896;&#20102;&#19968;&#20010;Stack&#12290;&#30456;&#24212;&#30340;&#65292;&#22312;retN()&#21644;retF()&#20004;&#20010;&#20989;&#25968;&#20013;&#65292;&#24403;&#21069;StackFrame&#30340;&#25351;&#38024;&#23601;&#27809;&#26377;&#20877;&#20256;&#19979;&#21435;&#20102;&#65292;&#25152;&#20197;&#22914;&#26524;&#27809;&#26377;&#21478;&#22806;&#30340;Stack&#21253;&#21547;&#20102;&#24403;&#21069;StackFrame&#30340;&#35805;&#65292;&#24403;&#21069;StackFrame&#23601;&#21487;&#20197;&#22238;&#25910;&#20102;&#12290;&#36825;&#37324;&#25105;&#20204;&#23545;Stack&#30340;&#25805;&#20316;&#21644;compiler&#33258;&#21160;&#29983;&#25104;&#30340;Stack&#22312;&#36923;&#36753;&#19978;&#26159;&#19968;&#27169;&#19968;&#26679;&#30340;&#65292;&#21482;&#26159;&#25105;&#20204;&#30340;stack&#22312;heap&#20013;&#12290;</p></li><li><p>&#25105;&#20204;&#20026;&#27599;&#19968;&#20010;&#20989;&#25968;&#21019;&#24314;&#20102;&#19968;&#20010;continuation&#31867;&#12290;&#36923;&#36753;&#19978;&#25105;&#20204;&#21482;&#26159;&#38656;&#35201;&#22312;continuation&#20013;&#20445;&#23384;&#19968;&#20010;&#20989;&#25968;&#25351;&#38024;&#65292;&#19981;&#36807;&#22312;Java&#37324;&#26368;&#31616;&#21333;&#30340;&#35299;&#27861;&#20043;&#19968;&#20415;&#26159;&#21019;&#36896;&#36825;&#20123;continuation&#30340;&#23376;&#31867;&#12290;</p></li></ol></div><p>&#31243;&#24207;&#30340;&#22823;&#37096;&#20998;&#20195;&#30721;&#30456;&#24403;&#30340;&#31616;&#21333;&#37325;&#22797;&#65292;&#36825;&#37324;&#23601;&#19981;&#20877;&#35299;&#37322;&#20102;&#12290;&#25105;&#20204;&#23545;Stack&#30340;&#22788;&#29702;&#20854;&#23454;&#24182;&#19981;&#24456;&#22797;&#26434;&#65292;&#20027;&#35201;&#38382;&#39064;&#26159;CPS&#31243;&#24207;&#26412;&#36523;&#22826;&#38590;&#30475;&#25026;&#12290;</p><p>&#19978;&#38754;&#22522;&#20110;heap&#30340;&#26041;&#27861;&#19982;&#22522;&#20110;stack&#30340;&#26041;&#27861;&#30456;&#27604;&#65292;&#26368;&#22823;&#30340;&#22909;&#22788;&#26159;&#22522;&#20110;heap&#27861;&#19981;&#29992;&#22797;&#21046;stack&#12290;&#19981;&#36807;&#65292;&#25226;&#31243;&#24207;&#21464;&#25104;CPS&#26684;&#24335;&#30456;&#24403;&#40635;&#28902;&#65307;&#30456;&#27604;&#20043;&#19979;&#65292;&#22797;&#21046;stack&#30340;&#20195;&#30721;&#23601;&#38750;&#24120;&#30340;&#31616;&#21333;&#22266;&#23450;&#12290;&#21478;&#19968;&#26041;&#38754;&#65292;&#25226;Java&#25972;&#20010;&#21464;&#25104;CPS&#24182;&#19981;&#22826;&#29616;&#23454;&#65292;&#22240;&#20026;Java&#37324;&#30340;&#20989;&#25968;&#35843;&#29992;&#22826;&#22810;&#65292;&#21464;&#25104;CPS&#30340;&#35805;&#20250;&#20135;&#29983;&#26497;&#22810;&#30340;&#20989;&#25968;&#12290;&#25152;&#20197;&#19968;&#33324;&#32780;&#35328;&#65292;&#22522;&#20110;stack&#30340;&#35299;&#20915;&#26041;&#26696;&#22312;Java&#19978;&#27604;&#36739;&#21487;&#34892;&#12290;</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s02.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.&nbsp;&#22312;Java&#19978;&#23454;&#29616;Continuation&#65306;&#22522;&#20110;stack&#27861;&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;5.&nbsp;RIFE&#31616;&#20171;</td></tr></table></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -