久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

python防止棧溢出的實例講解

瀏覽:5日期:2022-06-19 13:11:09
1、說明

使用遞歸函數的優點是邏輯簡單清晰,缺點是過深的調用會導致棧溢出。

解決遞歸調用棧溢出的方法是通過尾遞歸優化,事實上尾遞歸和循環的效果是一樣的,所以,把循環看成是一種特殊的尾遞歸函數也是可以的。

2、實例

def fact(n): return fact_iter(n, 1) def fact_iter(num, product): if num == 1:return product return fact_iter(num - 1, num * product) # fact(5)的調用過程===> fact_iter(5, 1)===> fact_iter(4, 5)===> fact_iter(3, 20)===> fact_iter(2, 60)===> fact_iter(1, 120)===> 120

知識點擴展:

棧溢出

在計算機中,函數調用是通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由于棧的大小不是無限的,所以,遞歸調用的次數過多,會導致棧溢出??梢栽囋噁act(1000):

>>> fact(1000)Traceback (most recent call last): File '<stdin>', line 1, in <module> File '<stdin>', line 4, in fact ... File '<stdin>', line 4, in factRuntimeError: maximum recursion depth exceeded

到此這篇關于python防止棧溢出的實例講解的文章就介紹到這了,更多相關python如何防止棧溢出內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 保山市| 靖安县| 拜泉县| 波密县| 博湖县| 台中县| 靖边县| 大英县| 郓城县| 老河口市| 东宁县| 尼玛县| 邳州市| 胶南市| 乐清市| 文登市| 定兴县| 河间市| 信阳市| 武鸣县| 中山市| 唐海县| 化德县| 敦煌市| 于都县| 台前县| 玉龙| 阳江市| 建昌县| 南充市| 陆良县| 郸城县| 湖南省| 镇坪县| 乌海市| 江陵县| 广饶县| 苗栗市| 鲁山县| 木兰县| 云安县|