zoukankan      html  css  js  c++  java
  • 函数的递归调用和二分法

    一. 递归调用

      在调用一个函数过程中又直接或间接地调用了函数自身

      条件: 1. 每进入下一次递归调用,问题的规模都有所减少

          2. 递归必须有一个明确的结束条件

       阶段: 回溯和递推

    # 打印出 lis=[1,[2,[3,[4,[5,[6,[7,[8,]]]]]]]] 中的每一个数字
    lis=[1,[2,[3,[4,[5,[6,[7,[8,]]]]]]]]
    def func(list1):
        for item in list1:
            if type(list1) is not list:
                print(item)
            else:
                func(item)
    
    
    func(lis)
    

    二. 二分查找法

      在有序排列中找到给定的数,可以将制定的数和有序排列的中间数做比较,若小于中间数,则再与前一半数的中间数做对比,一次类推

    # 例: 在nums=[3,5,7,11,13,23,24,76,103,111,201,202,250,303,341] 中查看是否有201 这个数
    
    nums=[3,5,7,11,13,23,24,76,103,111,201,202,250,303,341]
    def search_number(list1, number):
        if len(list1)==0:
            print ('没找到')
            return
        else:
            mid_index=len(list1) //2
            mid_num=list1[mid_index]
            if number<mid_num:
                list1=list1[:mid_index]
                search_number(list1,number)
            elif number > mid_num:
                list1=list1[mid_index+1:]
                search_number(list1,number)
            else:
                print('找到了')
    
    search_number(nums,22)
    

      

     

  • 相关阅读:
    团队博客18
    团队博客17
    团队博客16
    团队博客15
    团队博客14
    团队博客13
    团队博客12
    课堂作业08--MVC框架的具体应用
    课堂作业07--MVC框架
    课堂作业06--23中设计模式
  • 原文地址:https://www.cnblogs.com/Afrafre/p/10059136.html
Copyright © 2011-2022 走看看