1. 在遞迴呼叫工作棧建立之後,各層遞迴所涉及到的變數都已經壓入到棧中,每次呼叫一次函式,系統記憶體機制就會以棧的方式分配該遞迴函式所需的記憶體空間,同時,每層函式得出的結果會暫時儲存在這個棧的空間中;
2. 當整個遞迴函式在遇到已if()為標誌的條件結束標誌的時候,函式不需要繼續執行該函式,系統停止記憶體的分配,結束的時候,各個棧的空間從下到上返回本空間已算出的結果,逐層往上返回結果,直到到達棧頂,此時,已經得出正確結果,程式結束.
3. 對於有些程式設計問題,採用非遞迴,遞迴的方式,都可以解決,只是,採用遞迴的方式,在思維上更加簡潔明瞭,不容置疑,在解決問題的時候,可以根據問題的特徵,使得解題思路更加清晰.另外,遞迴在人工智慧方面有著廣泛的應用,以思維清晰著稱.
4. 遞迴的特點在於,乙個問題,可以重複使用已經定義好的函式,也就是說,這個問題,可以分解為若干個類似的子問題得以解決.而函式的不斷遞迴呼叫,就是說明,我們所要解決的問題是類似的,可以用同乙個函式解決,說明子問題完全相似.
5. 對於漢諾塔問題,最佳的方法是用遞迴解決,當然結局的方法有些不同,不同之處在於到底是想將a塔的盤子先借助c塔移到b塔還是借助b塔移到c塔.
就我理解的遞迴
看了幾篇文章 雖然不是很懂 我也小總結了下 第一 自己呼叫自己 第二 有大到小的順序 第三 當變數 1的時候 推出遞迴 if temp 1 return 1 就是 一定要設定出口 要不然會一直迴圈下去 第四 當函式呼叫自己時,在棧中為新的區域性變數和引數分配記憶體,函式的 用這些變數和引數重新執行。...
遞迴之我所理解
遞迴在實際程式設計中有著很重要的用處,最常見的用途莫過於檔案搜尋目錄遍歷了,我曾花了很長時間研究遞迴的性質,發現所有遞迴都可以用樹的結構描述出來,這只是我的發現,並沒有嚴格的證明,至少在我所研究過的所有遞迴應用例項中是成立的。遞迴的效率顯然不是很高,因為每次遞迴的時候,呼叫函式時得分配棧空間,函式返...
我關於遞迴的一些理解
遞迴可以作為一種解決問題的思想,簡單來說就是自己呼叫自己,可以用少量的 解決一些複雜的問題,並且這個問題是乙個重複的過程,但是遞迴必須要有乙個遞迴停止的條件,如果遞迴不停止的話就會出現 爆棧 現象 這裡我們使用求乙個數的階層可以來理解遞迴 1!1 2!2 1 2 1 3!3 2 1 3 2 3 2 ...