遞歸

遞歸的概念:
當(dāng)函數(shù)自身包含了對自身的調(diào)用,那么就是遞歸

遞歸的小練習(xí)
#對非線性列表求和
mylist = [1,2,[3],5,[6,[7,8,9]],1,2]
mysum = 0
def get_sum(iter):#接收一個等待求和的多層序列
    #iter 中 無非兩種數(shù)據(jù)類型: list int
    global mysum
    for var in iter:
        if type(var) == int: #當(dāng)前取出來的數(shù)據(jù)是int
            mysum += var
        else:
            get_sum(var) #遇到的又是一個列表,那么我們繼續(xù)遍歷
    #for循環(huán)結(jié)束的時候,遞歸結(jié)束
get_sum(mylist)
print(mysum)
#統(tǒng)計每一個出現(xiàn)的字符出現(xiàn)的次數(shù)
mylist = ['asdazxc','adxzc',['12390145fcsdjfhzkjxcmnasd','123987189asjkdsajkb'],'asdqwewqerq',['asd890q8390'],'asdhquiweqysa','asdhjkzhxjkckjasdh']
#把一樣的提出來
#統(tǒng)計每一個出現(xiàn)的字符出現(xiàn)的次數(shù)
#for循環(huán)實現(xiàn)
dict_num = {}
#key:對應(yīng)的字符
#value:出現(xiàn)的次數(shù)
def get_num(seq):
    #字典是可變數(shù)據(jù)類型,所以直接可以在函數(shù)作用域內(nèi)進(jìn)行修改
    for var in seq: #遍歷整個列表數(shù)據(jù)
        if type(var) == list:
            #如果取出來的還是一個列表,那么就繼續(xù)遞歸
            get_num(var)
        else: #如果碰到的是一個字符串
            for i in var:  #遍歷字符串,記錄次數(shù)
                if i in dict_num:
                    # 如果獲取到的字符,已經(jīng)存在了字典中,那么他的次數(shù)+1
                    dict_num[i] = dict_num[i] + 1
                else:
                    # 如果獲取到的字符沒出現(xiàn)過,那么就創(chuàng)建默認(rèn)值1就行
                    dict_num[i] = 1
get_num(mylist)
for key in dict_num:
    print(key,':',dict_num[key])
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容