算法图解学习笔记02:递归和栈
計算機內存原理
要說遞歸和棧的問題,首先就要說下計算機內存的基本原理。簡單理解計算機內存原理可以將一臺電腦看作超市的存包柜,每個柜子都有柜號(即計算機中的地址,如0x000000f)。當需要將數據存儲到計算機中時,計算機會提供一個地址。
棧
其實算法圖解這本書順序是先寫遞歸再寫棧,我認為這樣的順序不好,應當先理解棧之后才能更好理解遞歸。借用下啊哈算法的圖例和解釋:
棧限定只能在一端進行插入和刪除操作。比如說有一個小桶,小桶的直徑只能放一個小球,我們現在向小桶內依次放入2號、1號、3號小球。假如你現在需要拿出2號小球,那就必須先將3號小球拿出,再拿出1號小球,最后才能將2號小球拿出來。在剛才取小球的過程中,我們最先放進去的小球最后才能拿出來,而最后放進去的小球卻可以最先拿出來。這就是后進先出,也可以稱為先進后出。
遞歸
遞歸,上一張盜來的圖解釋下,遞歸的基本思想就是把規模大的問題轉化為規模小的相似的子問題來解決。特別地,在函數實現時,因為解決大問題的方法和解決小問題的方法往往是同一個方法,所以就產生了函數調用它自身的情況,這也正是遞歸的定義所在。格外重要的是,這個解決問題的函數必須有明確的結束條件,否則就會導致無限遞歸的情況。
?
用python實現階乘解釋下遞歸
1 def fact(x): 2 if x == 1: 3 return 1 4 else: 5 return x * fact(x-1)?
此時計算fact(3)的值
?
轉載于:https://www.cnblogs.com/vincentme/p/9404169.html
總結
以上是生活随笔為你收集整理的算法图解学习笔记02:递归和栈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 感谢Thunder团队
- 下一篇: centos 静态拨号