python 递归与 二分查找

# =============================       递归 与  算法

#递归
# n = 1 金老板 38+2 =40
# n = 2 alex n+2= 金老板 36+2 = 38
# n = 3 wusir n+2 = alex wusir 36

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

# 求阶乘 _ 递归函数
# 5! = 5*4*3*2*1 # 5 * 4! fn(5)
# 4! = 4*3*2*1 # 4 * 3! fn(4)
# 3 * 2! fn(3)
# 2 *1! fn(2)
# 1 fn(1) = 1
# def fn(n): #n=5
# if n == 1:return 1
# return fn(n-1) * n
# print(fn(5))


#算法

# 算法 计算的方法
# 99*99 = 99*(100-1) = 99*100-99*1 = 99*100-99 = 9900-99 = 9801 _ 人计算的方法
# 99 * 99
# 计算机的思维和人脑的思维是不同的
# 算法很难
# 计算机领域的 算法 是计算机认为简便的算法

# 查找算法
# 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]
# 66
# 方法一: 循环 # 5000000 4999999
# 方法二: l.index(66) #最正确的方法

# 算法
# 从有序的列表中查找值的位置
# [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]
# 41 < 66
# [42,43,55,56,66,67,69,72,76,82,83,88]
# 66 < 67
# [42,43,55,56,66]
# 55 < 66
# [56,66]
# 56 < 66
# [66]
# 66 == 66

# 递归 : 解决一个问题,问题的答案,依托于另一个问题,另外的这个问题和要解决的问题是基本一致的
# 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]
# def find(l,aim):
# mid = len(l)//2
# if l[mid] > aim:
# new_l = l[:mid]
# find(new_l,aim)
# elif l[mid] < aim:
# new_l = l[mid+1:]
# find(new_l, aim)
# elif l[mid] == aim:
# print('找到了:',mid,aim,l[mid])
# find(l,66)

# 完整详细的 二分查找
# def find(l,aim,start=0,end=None):
# if end == None:end = len(l)-1
# if start <= end:
# mid = (end - start) // 2 + start
# if l[mid] > aim:
# return find(l,aim,start=start,end=mid-1)
# elif l[mid] < aim:
# return find(l,aim,start=mid+1,end=end)
# elif l[mid] == aim:
# return mid
# else:
# return None
# 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]
# print('ret :',find(l,18))
# 1 如果要查找的值不在列表中
# 2 参数的简化
# 3 返回值的问题

转载于:https://www.cnblogs.com/xuerh/p/8476168.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值