5遞歸和二分算法

一 .遞歸算法

遞歸的定義——在一個函數裏再調用這個函數自己函數

遞歸的最大深度-997spa

例子算年齡 問你a幾歲,a比b大2歲,b比c大2歲,c是40歲,問你a幾歲?code

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

 

二. 二分算法(遞歸實現)blog

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))
相關文章
相關標籤/搜索