码迷,mamicode.com
首页 > 编程语言 > 详细

python基础:递归函数返回值(return)误区

时间:2017-06-02 17:21:17      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:技术分享   img   退出   n+1   函数返回   地方   logs   log   strong   

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)
View Code

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)

python基础:递归函数返回值(return)误区

标签:技术分享   img   退出   n+1   函数返回   地方   logs   log   strong   

原文地址:http://www.cnblogs.com/yizhenfeng168/p/6933600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!