国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Python中最大遞歸深度值的示例分析

發(fā)布時(shí)間:2021-08-26 11:14 來(lái)源:億速云 閱讀:0 作者:小新 欄目: 開(kāi)發(fā)技術(shù)

這篇文章將為大家詳細講解有關(guān)Python中最大遞歸深度值的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

Python對遞歸函數設置是有默認值。 可以通過(guò)下面命令來(lái)查看設置的默認值

>>> import sys
>>> sys.getrecursionlimit()
3000

查看該函數的幫助文件就更清晰了:

>>> help(sys.getrecursionlimit)
Help on built-in function getrecursionlimit in module sys:
getrecursionlimit(...)
 getrecursionlimit()
 Return the current value of the recursion limit, the maximum depth
 of the Python interpreter stack. This limit prevents infinite
 recursion from causing an overflow of the C stack and crashing Python.

從上面的幫助信息可以看到,如果超過(guò)這個(gè)默認的最大遞歸深度,就會(huì )導致不可預測的錯誤,比如C棧溢出或其他錯誤。 下面用斐波那契數列的遞歸函數來(lái)測試下該方法,來(lái)看真正可行的最大遞歸深度.

>>> def fib(n):
...  if n == 1:
...   return 1
...  else:
...   return fib(n-1) + n
>>> fib(2989)
4468555

當執行到默認的3000附近,2989時(shí),上面是可以執行到的。當遞歸深度到2900時(shí)就報錯了。

>>> fib(2990)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "<stdin>", line 5, in fib
 File "<stdin>", line 5, in fib
 File "<stdin>", line 5, in fib
 [Previous line repeated 2985 more times]
 File "<stdin>", line 2, in fib
RecursionError: maximum recursion depth exceeded in comparison
maximum recursion depth exceeded in comparison

也就是最大的實(shí)際遞歸深度就是2989了,是否可以設置這個(gè)值大點(diǎn)呢? 可以通過(guò)這個(gè)方法來(lái)設置:

>>> import sys
>>> sys.setrecursionlimit(10000)
>>> sys.getrecursionlimit()
10000

通過(guò)setrecursionlimit(10000)后再查看就是10000。再來(lái)測試下實(shí)際上的遞歸深度可以到多少,看是否在2989上有所增加呢?

可以看到我們設置最大遞歸深度10000,實(shí)際執行遞歸深度達到3400,不再報RecursionError錯誤,但會(huì )報關(guān)閉程序的提示。通過(guò)一個(gè)個(gè)單獨調試,到3213還能顯示正常答案。到3214就又報上面的提示了。

>>> fib(3213)
5163291

上面的是Python3.6.5得出的實(shí)際最大遞歸數字:3213。

同樣一臺計算機,用Python2.7.10,同樣設置成默認最大遞歸深度10000,得出實(shí)際最大遞歸深度是4484

>>> fib(4484)
10055370

所以最終這個(gè)數字取決于計算機本身的計算能力和Python的版本,如果超過(guò)系統堆棧深度,Python無(wú)法支撐也就奔潰了。同樣的PC,Python的版本不同,這個(gè)值都有差異。有的時(shí)候差異還很大。

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

午夜福利试看120秒体验区| 最近中文字幕免费MV视频| 暴雨入室侵犯进出肉体免费观看| 久久久精品2019免费观看| 久久久久AV无码免费网| 少妇无码太爽了不卡视频在线看|