美文网首页
python基础-方法的递归

python基础-方法的递归

作者: 雷阳洪 | 来源:发表于2020-04-25 13:16 被阅读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)
    

    相关文章

      网友评论

          本文标题:python基础-方法的递归

          本文链接:https://www.haomeiwen.com/subject/hdstwhtx.html