递归

递归的概念:
当函数自身包含了对自身的调用,那么就是递归

递归的小练习
#对非线性列表求和
mylist = [1,2,[3],5,[6,[7,8,9]],1,2]
mysum = 0
def get_sum(iter):#接收一个等待求和的多层序列
    #iter 中 无非两种数据类型: list int
    global mysum
    for var in iter:
        if type(var) == int: #当前取出来的数据是int
            mysum += var
        else:
            get_sum(var) #遇到的又是一个列表,那么我们继续遍历
    #for循环结束的时候,递归结束
get_sum(mylist)
print(mysum)
#统计每一个出现的字符出现的次数
mylist = ['asdazxc','adxzc',['12390145fcsdjfhzkjxcmnasd','123987189asjkdsajkb'],'asdqwewqerq',['asd890q8390'],'asdhquiweqysa','asdhjkzhxjkckjasdh']
#把一样的提出来
#统计每一个出现的字符出现的次数
#for循环实现
dict_num = {}
#key:对应的字符
#value:出现的次数
def get_num(seq):
    #字典是可变数据类型,所以直接可以在函数作用域内进行修改
    for var in seq: #遍历整个列表数据
        if type(var) == list:
            #如果取出来的还是一个列表,那么就继续递归
            get_num(var)
        else: #如果碰到的是一个字符串
            for i in var:  #遍历字符串,记录次数
                if i in dict_num:
                    # 如果获取到的字符,已经存在了字典中,那么他的次数+1
                    dict_num[i] = dict_num[i] + 1
                else:
                    # 如果获取到的字符没出现过,那么就创建默认值1就行
                    dict_num[i] = 1
get_num(mylist)
for key in dict_num:
    print(key,':',dict_num[key])
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。