zoukankan      html  css  js  c++  java
  • 递归

    递归

    1 什么是函数递归
    函数递归调用(是一种特殊的嵌套调用):在调用一个函数的过程中,又直接或间接地调用了该函数本身

    递归必须要有两个明确的阶段:
    递推:一层一层递归调用下去,强调每进入下一层递归问题的规模都必须有所减少
    回溯:递归必须要有一个明确的结束条件,在满足该条件时结束递推
    开始一层一层回溯

    递归的精髓在于通过不断地重复逼近一个最终的结果

    2、为什么要用函数递归

    通过不断地重复逼近一个最终的结果

    3、如何用递归

    #递推:一层一层递归调用
    #但不满足回溯
    # def func(n): # print(n) # func(n + 1) # # # func(1) # def func(): # print('from func') # bar() # def bar(): # print('from bar') # func() # # func()
    #递推:一层一层递归调用下去,强调每进入下一层递归问题的规模都必须有所减少
    #回溯:递归必须要有一个明确的结束条件,在满足该条件时结束递推开始一层一层回溯
    # age(5) = age(4) + 2 # age(4) = age(3) + 2 # age(3) = age(2) + 2 # age(2) = age(1) + 2 # age(1) = 26 #结束条件 # age(n) = age(n-1) + 2 #n > 1 # age(1) = 26 #n = 1 # def age(n): # if n == 1: # return 26 # return age(n-1) + 2 # # print(age(5))
    #取出列表中1,2,3,4,5,6,7,8,9
    l=[1,[2,[3,[4,[5,[6,[7,[8,[9,]]]]]]]]]
    
    def tell(l):
        for item in l:
            if type(item) is list:
                #继续进入下一层递归
                tell(item)
            else:
                print(item)
    
    tell(l)
    # 有一个从小到大排列的整型数字列表
    # nums=[1,3,7,11,22,34,55,78,111,115,137,149,246,371]
    # 10 in nums
    # for item in nums:
    #     if item == 10:
    #         print('find it')
    #         break
    # else:
    #     print('not exists')
    nums=[1,3,7,11,22,34,55,78,111,115,137,149,246,371]
    def search(search_num,nums):
        print(nums)
        if len(nums) == 0:
            print('not exists')
            return
        mid_index=len(nums) // 2
        if search_num > nums[mid_index]:
            # in the right
            nums=nums[mid_index+1:]
            search(search_num,nums)
        elif search_num < nums[mid_index]:
            # in the left
            nums=nums[:mid_index]
            search(search_num,nums)
        else:
            print('find it')
    
    search(31,nums)
  • 相关阅读:
    Win32串口API
    Windows核心编程 第4章 进程
    大家都来吐槽下12306的网站bug吧
    HttpRequest模拟Post和Get提交代码
    jquery.masonry + jquery.infinitescroll 实现瀑布流布局
    三层架构之泛型应用
    listView 中,大图标时,各个图标之间间距的控制
    Windows Phone APP的设计过程
    分享三个小故事
    最值得创业者聆听的10大TED演讲(中文字幕视频)
  • 原文地址:https://www.cnblogs.com/hanbowen/p/9182991.html
Copyright © 2011-2022 走看看