python基础-方法的递归

2020-04-25  本文已影响0人  雷阳洪

定义:在调用一个函数的过程中直接或间接的调用该函数本身,称之为递归调用。递归调用最多能调用999层。

递归分为两个重要的阶段: 递推+回溯

递归函数定义

# 求10!
def jc(n):
    if(n==1): # 指定递归的终止条件
        return n
    return n * jc(n-1)  # 递归调用

print(jc(10))

注意:

递归伪代码

def sum(a):
    if(a == 1):
        return a
    return a + sum(a - 1)

print(sum(100))


'''
100+sum(99)
100+99+sum(98)
100+99+98+sum(97)
....
100 + 99 + 98 + ....+ 1
'''
'''
写出下列递归函数的伪代码:
'''
d = {"name":"leiyh","sex":"男","age":"18","人物信息":['leiyh','男',18],"元组":(0,1,2,3,4)}

'''
第一次遍历:
search("leiyh")
search("男")
search("18")
search(['leiyh','男',18])
第二次遍历:
第二次遍历的是人物信息字段下的数组
search("leiyh")
search("男")
search(18)
'''

def search(d):
    # 判断是否是字典,满足遍历
    if isinstance(d,dict):
        # 遍历获取key: 'name', 'sex', 'age', '人物信息' 用key值遍历获取value
        for key in d:
            # 每次遍历之后都会重新调用search()函数对里层的value重新判断是否是字典或者数组
            search(d[key])
    # if条件不满足,就判断d是否是数组
    elif(isinstance(d,list)):
        # 遍历获取d字典所有key
        for i in d:
            # 引用key 重新调用search()函数 重新判断d字典属性 d字典第二次判断的key是:人物信息
            search(i)
    # 判断是否是元组,满足获取该元组里面所有value
    elif(isinstance(d,tuple)):
        for i in d:
            # 递归自调用遍历
            search(i)
    # 直到上述条件都不满足输出打印d字典
    else:
        print(d)
search(d)
上一篇下一篇

猜你喜欢

热点阅读