Python-----递归函数,二分查找

递归函数
:自己调用自己
import sys
sys.setrecursionlimit(10000)
def func1():
print(666)
func1()
func1()

默认最大递归深度998
import sys
sys.setrecursionlimit(10000)
count=0
def func1(n):
n+=1
print(n)
func1(n)
func1(count)


'''
n = 1 太白 age(1) = 23
n = 2 日天 age(2) = age(1) + 2
n = 3 wusir age(3) = age(2) + 2
n = 4 alex age(4) = age(3) + 2

'''
def age(n):
if n==1:
return 23
else:
return age(n-1)+2
print(age(4)) #23+2+2+2
以下内容是递归函数的具体运行
def age(n): #n=4
if n==1:
return 23
else:
return age(n-1)+2
ret=age(4)
'''
def age(n): # n=3
if n==1:
return 23
else:
return age(1)+2

def age(n): #n=2
if n==1:
return 23
else:
return age(1)+2

def age(): #$4$$$$
if n==1:
return 23
else:
return age(1)+2
'''

二分查找:
用代码写的计算方式。
二分查找是最简单的算法,比较经典的算法。
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]
print(len(l))
print(l.index(66))
count=0
for i in l:
if i ==66:
print(count)
count+=1
for i in range(len(l)):
if l[i]==66:
print(i)
break
else:
print('找不到')

目标值:aim = 66
寻找中间索引: min_index = len(l) // 2
aim 与 中间索引对应的值进行比较
aim>l[min_index]:
l[min_index+1:]
aim<l[min_index]:
l[:min_index-1]
aim==l[min_index]
return min_index
l1 = [1, 3, 5, 7, 8, 10, 11]
def binary_search(l1,aim):
mid_index=len(l1)//2
if aim >l1[mid_index]:
return binary_search(l1[mid_index+1:],aim)
elif aim<l1[mid_index]:
return binary_search(l1[:mid_index],aim)
elif aim==l1[mid_index]:
return mid_index
else:
return None

print(binary_search(l1,5))

li = [1, 3, 5, 7, 8, 10, 11]
def func(li,aim):
mid_index=len(li)//2
if aim>li[mid_index]:
return func(li[mid_index+1:],aim)
elif aim<li[mid_index]:
return func(li[:mid_index], aim)
elif aim==li[mid_index]:
return mid_index
else:
return None
print(func(li,10))

li = [1, 3, 5, 7, 8, 10, 11]
def binary_search(li,aim,start=0,end=None): #$$$$$$$$
end=len(li)-1 if end is None else end
mid_index=(end-start)//2+start
if start<=end:


if aim >li[mid_index]:
return binary_search(li,aim,start=mid_index+1,end=end)
elif aim<li[mid_index]:
return binary_search(li,aim,start=start,end=mid_index)
elif aim==li[mid_index]:
return mid_index
else:
return None
else:
return None
print(binary_search(li,17))



posted @ 2018-05-20 12:59  weilai小超人  阅读(178)  评论(0编辑  收藏  举报