本文關(guān)鍵闡述了處理python遞歸函數(shù)及遞歸算法頻次受限制難題,具有非常好的實用價值,希望能幫助到大家。如有誤或者未考慮到真正的地區(qū),望鼎力相助
遞歸函數(shù)及遞歸算法頻次受限制
一個函數(shù)在外部啟用自身,那么這樣的函數(shù)是遞歸函數(shù)。遞歸算法要反復(fù)應(yīng)用自身,每遞歸算法一回,越近最后的值。如果一個難題需要由很多類似小問題處理,可以選擇應(yīng)用遞歸函數(shù)。伴隨著遞歸算法的深層次,難題經(jīng)營規(guī)模對比之前都應(yīng)該所減少。return函數(shù)自身的方法保證了遞歸算法的不斷開展,但如果沒有很明確的完畢標(biāo)準(zhǔn),遞歸算法會無盡繼續(xù)下去。因此當(dāng)已經(jīng)是問題改進(jìn)的水平,應(yīng)當(dāng)告知函數(shù)公式完畢遞歸算法,這個時候就需要很明確的完畢標(biāo)準(zhǔn)。
比較常見的2個遞歸算法事例:求合、求階乘n!
求合:sum=n+n(n-1)+…+1
defsum(n): ifn>0: returnn+sum(n-1) else: return0 new_sum=sum(10) print(new_sum) #output 55
求階乘:n!=1x2x3…xn
deffactorial(n): ifn==1: return1 else: returnn*factorial(n-1) new_sum=factorial(5) print(new_sum) #output 120
應(yīng)用遞歸函數(shù)需要注意遞歸算法頻次默認(rèn)限制為1000,如果遞歸算法頻次較多會導(dǎo)致棧溢出難題
比如
defsum(n): ifn>0: return1+sum(n-1) else: return0 new_sum=sum(1000) print(new_sum) 會報RecursionError:maximumrecursiondepthexceededincomparison的不正確
解決問題的方法是改動可遞歸算法次數(shù)
importsys sys.setrecursionlimit(1500)#可遞歸算法頻次修改為1500 defsum(n): ifn>0: return1+sum(n-1) else: return0 new_sum=sum(1000) print(new_sum) #output 1000
改動遞歸算法頻次時需要注意,改動可遞歸算法頻次為1500,遞歸算法深度到不了1500,在1400左右。默認(rèn)可遞歸算法頻次為1000,遞歸算法深度也到不了1000,到992左右
如何控制遞歸算法次數(shù)
經(jīng)常會用到遞歸算法,雖然能解決很多問題,但其缺點(diǎn)很明顯,有可能無法跳出造成死循環(huán),能控制遞歸算法頻次就可以避免這種情況。
用lua嘗試了幾種方法,
第一種
在方式內(nèi)定義一個變量計數(shù):
functionrecursionTest() localtimes=0 iftimes<10then times=times+1 recursionTest() end iftimes==0then print("outerround") end end
實行下來,是無法限制的,因為局部變量每次都會重置為0。
第二種
localrecurTimes=0 functionrecursionTest2() ifrecurTimes<10then recurTimes=recurTimes+1 recursionTest2() end end
此方法能控制頻次,可是自變量必須界定在方式身體之外,執(zhí)行函數(shù)前都要先將這一自變量設(shè)成0,必須在遞歸方法業(yè)務(wù)外包一層層,較為繁雜。
第三類
functionrecursion(str,t) str=stror"firsttime" t=tor0 t=t+1 print(str,t) ift<10then recursion("times:",t) end ift==1then print("outerround") end end
在遞歸算法時傳到1個自動編號自變量,做到閥值時終止遞歸算法,實行外層時不用傳參,初始值為0,且可以根據(jù)t的值分辨現(xiàn)階段的遞歸算法疊加層數(shù),還可以在遞歸算法結(jié)束后,在外層執(zhí)行完之前做過別的事,一箭雙雕。
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/128850.html
摘要:數(shù)據(jù)項是數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)項是對客觀事物某一方面特性的數(shù)據(jù)描述。數(shù)據(jù)對象是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集。數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)元素之間的相互關(guān)系稱為邏輯結(jié)構(gòu)。 項目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡...
摘要:數(shù)據(jù)項是數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)項是對客觀事物某一方面特性的數(shù)據(jù)描述。數(shù)據(jù)對象是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集。數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)元素之間的相互關(guān)系稱為邏輯結(jié)構(gòu)。 項目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡...
摘要:數(shù)據(jù)項是數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)項是對客觀事物某一方面特性的數(shù)據(jù)描述。數(shù)據(jù)對象是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集。數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)元素之間的相互關(guān)系稱為邏輯結(jié)構(gòu)。 項目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡...
摘要:得到的結(jié)果如下上圖是門卷積神經(jīng)網(wǎng)絡(luò)模型與和模型在數(shù)據(jù)集基準(zhǔn)上進(jìn)行測試的結(jié)果。雖然在這一研究中卷積神經(jīng)網(wǎng)絡(luò)在性能上表現(xiàn)出了對遞歸神經(jīng)網(wǎng)絡(luò),尤其是的全面超越,但是,現(xiàn)在談取代還為時尚早。 語言模型對于語音識別系統(tǒng)來說,是一個關(guān)鍵的組成部分,在機(jī)器翻譯中也是如此。近年來,神經(jīng)網(wǎng)絡(luò)模型被認(rèn)為在性能上要優(yōu)于經(jīng)典的 n-gram 語言模型。經(jīng)典的語言模型會面臨數(shù)據(jù)稀疏的難題,使得模型很難表征大型的文本,...
閱讀 1066·2023-01-14 11:38
閱讀 1062·2023-01-14 11:04
閱讀 901·2023-01-14 10:48
閱讀 2377·2023-01-14 10:34
閱讀 1147·2023-01-14 10:24
閱讀 1026·2023-01-14 10:18
閱讀 654·2023-01-14 10:09
閱讀 733·2023-01-14 10:02