递归,即不断的调用己身,直到找到自己需要的东西。
必要的2个条件:
1.基线条件:触发后函数不再调用自己,跳出循环;
2.递归条件:函数调用自己;
二者缺一不可。
代码说明如下:
# 简单示例
def count(i):
if i <= 0: # 基线条件, 若i <= 0时,跳出调用自己
return
else:
count(i-1) # 递归条件,i > 0时,调用自己, 注意,入参是基于基线条件的入参,每次必定变化
简单应用:
# 问题:一个多层嵌套的字典,需要取出所有的最内层的key和value,怎么做?,字典如下:
data_dict = {
'a': {
"a": {'a': {'a': {'a': {'a': 1}}}},
'e': 11
},
'b': {
"b": {'b': 2}
},
'c': {
"c": {'c': 3}
},
'd': 4
}
def count(d): # 入参d是一个字典
for k, v in d.items(): # 遍历字典,取key和value值
if isinstance(v, dict): # 递归条件,若取到的value是个字典,则调用自己
count(v)
else: # 基线条件,若取到的value不是字典,则是当前字典最内层的value, 打印出来
print(k, v)
if __name__ == '__main__':
count(data_dict)
运行结果如下:



