數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)(C++)之遞歸(good)
http://www.yesky.com/90/1736590.shtml

對于遞歸的一些探討
http://blog.csdn.net/zongxiong/archive/2006/03/23/635777.aspx
quote:
用遞歸的程序都可以用迭代(其實(shí)也就是循環(huán))的方式代替,而所有的循環(huán)程序也都可以改寫成遞歸,這

兩者之間的轉(zhuǎn)換只是一個(gè)程序設(shè)計(jì)難度、易讀性以及程序執(zhí)行效率的問題。

如何用棧實(shí)現(xiàn)遞歸與非遞歸的轉(zhuǎn)換
http://blog.csdn.net/dragondwy/archive/2006/06/30/855391.aspx

遞歸函數(shù)的工作原理!
http://www.oia.com.cn/Web/CSDN/phppost5/php43338.htm
?回復(fù)人: yorgo(羽高) ( ) 信譽(yù):99 ?? ?2002-06-12 13:29:37Z ?? ?得分:10
函數(shù)調(diào)用函數(shù)本身

在調(diào)用的時(shí)候?qū)F(xiàn)有的環(huán)境、變量參數(shù)壓入棧,然后調(diào)用函數(shù)本身
函數(shù)退出的時(shí)候,從棧頂取出壓入的環(huán)境、變量參數(shù),然后完成上一個(gè)函數(shù)的調(diào)用。直到棧為空,函數(shù)停

止運(yùn)行,退出

回復(fù)人: dongfangran(東方冉) ( ) 信譽(yù):95 ?? ?2002-06-13 16:22:25Z ?? ?得分:20
?? ?清華大學(xué)出的那本〉《數(shù)據(jù)結(jié)構(gòu)》 上有關(guān)棧的那一章用棧把第歸說得很詳細(xì)。不妨看一下。



遞歸函數(shù)內(nèi)部的原理????不要跟我講自己調(diào)用自己這樣的話,我一分也不會給你的
http://www.csdnback.com/ForumsView/t/20020613/12/800443.html

quote:
系統(tǒng)根本就不管你是不是遞歸函數(shù),他也不可能知道. ?
? 他只是在有函數(shù)調(diào)用的時(shí)候,把"主程序"的信息壓入棧,然后調(diào)用函數(shù),執(zhí)行完后再把"主程序"的信息從

棧里彈出來,恢復(fù). ?
? 也就是說,遞歸其實(shí)是一種函數(shù)調(diào)用的"技巧",只不過這種技巧很基本罷了.


呵呵,盡管你不想聽到“自己調(diào)用自己”這樣的話,我還是要說:就是自己調(diào)用自己的一個(gè)過程。請看下

: ?
? void?? fun() ?
? { ?
??? .. ?
??? fun(); ?
??? .. ?
? } ?
? ?
?   當(dāng)執(zhí)行到fun時(shí),發(fā)生調(diào)用,特別的是這里是調(diào)用它本身。在函數(shù)的調(diào)用處理中,不同的語言會有

不同的處理方式,這一點(diǎn)在編譯原理的課程中講到的比較多,分配策略有:靜態(tài)分配,棧式分配,堆式分

配三種。 ?
?   在過程執(zhí)行時(shí),系統(tǒng)使用的一個(gè)連續(xù)存儲塊,稱為活動(dòng)記錄。我現(xiàn)就C語言的調(diào)用特點(diǎn)說一下活動(dòng)

記錄。在C語言中,當(dāng)發(fā)生函數(shù)調(diào)用時(shí),就產(chǎn)生了一個(gè)過程的新的活動(dòng)記錄,這些信息被壓入棧中保存,

以便此函數(shù)執(zhí)行完畢時(shí)返回時(shí)用。當(dāng)函數(shù)返回時(shí),當(dāng)前記錄的內(nèi)容有: ?
? ?
?   | 連接數(shù)據(jù) | ?
?   | 返回地址 | ?
?   | 動(dòng)態(tài)鏈  | ?
?   | 靜態(tài)鏈  | ?
?   | 形式單元 | ?
?   | 局部數(shù)據(jù) | ?
?   ?? ------- ?
? 針對一個(gè)C程序而言,其整體的棧分配方式為: ?
? ?
?   | main調(diào)用的函數(shù)調(diào)用的其它函數(shù)(包括自己)的活動(dòng)記錄| ?
?   | main調(diào)用的函數(shù)的活動(dòng)記錄             | ?
?   | main的活動(dòng)記錄                  | ?
?   | 全局?jǐn)?shù)據(jù)區(qū)                    | ?
?   ?? ---------------------------  ?
? ?
? 不知我講明白了沒有?:)


在人工實(shí)現(xiàn)遞遞歸函數(shù),并不一定要將現(xiàn)場數(shù)據(jù)(返回點(diǎn)及參數(shù))放到棧(stack)里,我們完全可以將它們

放在可用空間更大的堆(heap)中。不過由程序自動(dòng)實(shí)現(xiàn)時(shí),則如上各位所說的,一定是放在stack中的

,否則編程時(shí)也不會那么容易出現(xiàn)‘stack?? overflow'錯(cuò)了。? ?