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)
    

      

     

  • 相关阅读:
    help python(查看模块帮助文档)
    Vim常用快捷键
    tar 解压缩
    目前的学习计划
    学习方向
    C#转Python计划
    困惑的屌丝,求方向。。。
    修改PYTHONPATH的一种方法(在Window平台和Ubuntu下都有效)
    使用正则表达式统计vs项目代码总行数[转]
    日常工作细节汇总
  • 原文地址:https://www.cnblogs.com/Afrafre/p/10059136.html
Copyright © 2011-2022 走看看