5递归和二分算法

一 .递归

递归的定义——在一个函数里再调用这个函数本身

递归的最大深度-997

例子算年龄 问你a几岁,a比b大2岁,b比c大2岁,c是40岁,问你a几岁?

# def age(n):
#     if n == 3:
#         return 40
#     else:
#         return age(n+1)+2
# print(age(1))

二. 二分算法(递归实现)

l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
 1 def cal(l,num,start,end):
 2     '''
 3     
 4     :param l: 是列表
 5     :param num: 要找的数字
 6     :param start: 开始索引
 7     :param end: 结束索引
 8     :return: 
 9     '''
10     if start<end:
11         mid = (end-start)//2 +start ##mid代表索引
12         # print(start,end)
13 
14         if l[mid]< num:
15             return  cal(l,num,mid+1,end)
16         elif l[mid]> num:
17             return cal(l,num,start,mid-1)
18         else:
19             return mid,l[mid]
20     else:
21         return '没找到'
22 print(cal(l,53,0,len(l)-1))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值