zoukankan      html  css  js  c++  java
  • 递归调用

     1 #二分法查找列表数
     2 def find_num(li,num,start=0,end=None):     # start和end 为系统默认参数
     3     end =len(li)if end is None else end #开始时如果end为None 则让他为列表长度
     4     li_index=(end-start)//2+start           #计算中间值   //地板除取整
     5     if start<=end:    #索引的开头小于等于结尾
     6         if num<li[li_index]:
     7            return find_num(li,num,start=0,end=li_index-1)   #如果结果比中间数小 结尾需要重新设置
     8         if num>li[li_index]:
     9            return find_num(li,num,start=li_index+1,end=end)  #如果结果比中间数大,开头需要重新设置
    10         elif num==li[li_index]:           #如果相等 则就是他
    11            return li_index
    12     else:       #开头大于结尾的序号  找不到这样的数字
    13         return '找不到这个数'
    14 
    15 li=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,51,53,59,61,67,71,73,79,83,89,97,101]
    16 n=int(input('请输入要查找的数'))
    17 f=find_num(li,n)
    18 print(f)

    用递归查找列表元素,则必须为有序列表 从大到小 或者从小到大

    注意:start<=end 是可以找到的,尤其是等于否则忘记等于有些数就会找不到

  • 相关阅读:
    Solr4.7+Tomcat7.0配置
    Solr suggest 搜索建议功能 配置问题
    Solr 通过经纬度指定范围搜索
    Quartz.net 实例
    log4net简单实例
    依赖注入(Autofac)
    设计模式_状态模式_C#
    C# XML操作
    策略模式_C#_设计模式
    STM32随记
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9348937.html
Copyright © 2011-2022 走看看