码迷,mamicode.com
首页 > 其他好文 > 详细

递归调用

时间:2018-07-22 11:12:50      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:print   结果   序号   开头   就是   tar   找不到   默认   inpu   

 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)

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

递归调用

标签:print   结果   序号   开头   就是   tar   找不到   默认   inpu   

原文地址:https://www.cnblogs.com/wen-kang/p/9348937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!