就我理解的遞迴

2022-01-14 11:29:35 字數 521 閱讀 7628

看了幾篇文章 雖然不是很懂 我也小總結了下

第一:自己呼叫自己

第二:有大到小的順序

第三:當變數=1的時候 推出遞迴 if(temp==1) return 1;  就是 一定要設定出口 要不然會一直迴圈下去

第四:當函式呼叫自己時,在棧中為新的區域性變數和引數分配記憶體,函式的**用這些變數和引數重新執行。遞迴呼叫並不是把函式**重新複製一遍,僅僅引數是新的。當每次遞迴呼叫返回時,老的區域性變數和引數就從棧中消除,從函式內此次函式呼叫點重新啟動執行。可遞迴的函式被說成是對自身的「推入和拉出」。

第五:遞迴執行速度慢,耗記憶體

第六:動態規劃能有效的--不會造成重複運

end在命令式程式設計中,我們解決一些問題往往可以使用迴圈來代替遞迴,這樣便不會因為資料規模造成堆疊溢位。但是在函式式程式設計中,要實現「迴圈」的唯一方法便是「遞迴」,因此尾遞迴和cps對於函式式程式設計的意義非常重大。了解尾遞迴,對於程式設計思維也有很大幫助,因此大家不妨多加思考和練習,讓這樣的方式為自己所用

參考:理論上有點懂了  可是不會用哦~請高手指教哈

我理解的遞迴

1.在遞迴呼叫工作棧建立之後,各層遞迴所涉及到的變數都已經壓入到棧中,每次呼叫一次函式,系統記憶體機制就會以棧的方式分配該遞迴函式所需的記憶體空間,同時,每層函式得出的結果會暫時儲存在這個棧的空間中 2.當整個遞迴函式在遇到已if 為標誌的條件結束標誌的時候,函式不需要繼續執行該函式,系統停止記憶體...

遞迴之我所理解

遞迴在實際程式設計中有著很重要的用處,最常見的用途莫過於檔案搜尋目錄遍歷了,我曾花了很長時間研究遞迴的性質,發現所有遞迴都可以用樹的結構描述出來,這只是我的發現,並沒有嚴格的證明,至少在我所研究過的所有遞迴應用例項中是成立的。遞迴的效率顯然不是很高,因為每次遞迴的時候,呼叫函式時得分配棧空間,函式返...

我關於遞迴的一些理解

遞迴可以作為一種解決問題的思想,簡單來說就是自己呼叫自己,可以用少量的 解決一些複雜的問題,並且這個問題是乙個重複的過程,但是遞迴必須要有乙個遞迴停止的條件,如果遞迴不停止的話就會出現 爆棧 現象 這裡我們使用求乙個數的階層可以來理解遞迴 1!1 2!2 1 2 1 3!3 2 1 3 2 3 2 ...