递归的概念:
当函数自身包含了对自身的调用,那么就是递归
递归的小练习
#对非线性列表求和
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])
网友评论