return語句用於退出函數,向調用方返回一個表達式。return在不帶參數的情況下(或者沒有寫return語句),
默認返回None。None是一個特殊的值,它的數據類型是NoneType。NoneType是Python的特殊類型,它只有一個取值None。
它不支持任何運算也沒有任何內建方法,和任何其他的數據類型比較是否相等時永遠返回false,也可以將None賦值給任何變量。。。
1》當函數沒有顯式return,默認返回None值
2》當遞歸函數有return時,在遞歸的地方也要return,不然永遠返回的是None
1 import time 2 def binary_search(data,find_n): 3 Len=len(data) 4 if Len==1: 5 if data[0]==find_n: 6 #print("找到,在第%d個" %(1)) 7 return 1 8 else: 9 #print("沒找到") 10 return 0 11 elif Len==2: 12 if data[0]==find_n: 13 #print("找到,在第%d個" %(1)) 14 return 1 15 elif data[1]==find_n: 16 #print("找到,在第%d個" %(2)) 17 return 1 18 else: 19 #print("沒找到") 20 return 0 21 else: 22 mid_n=int(Len/2) 23 mid_val=data[mid_n] 24 if mid_val==find_n: 25 #print("找到,在第%d個" %(mid_n+1)) 26 return 1 27 elif mid_val<find_n: 28 right_val=data[mid_n:] 29 return binary_search(right_val,find_n) 30 else: 31 left_val=data[:mid_n] 32 return binary_search(left_val,find_n) 33 34 def split_data(n): 35 start=0 36 stop=1000 37 flag=1 38 Len=n 39 while flag: 40 if Len>1000: 41 data=[x for x in range(start,stop,1)] 42 yield data 43 start=start+1000 44 stop=stop+1000 45 Len=Len-1000 46 else: 47 data=[x for x in range(start,n,1)] 48 yield data 49 flag=0 50 51 52 if __name__=="__main__": 53 t0=time.time() 54 for data in split_data(10000000000000): 55 f=binary_search(data,999999999) 56 #print(f) 57 if f: 58 print("已找到") 59 break 60 t1=time.time()-t0 61 print(t1)
elif mid_val<find_n:
right_val=data[mid_n:]
return binary_search(right_val,find_n)
else:
left_val=data[:mid_n]
return binary_search(left_val,find_n)
