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

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)

时间: 2024-09-27 04:34:21

python基础:递归函数返回值(return)误区的相关文章

第二天,函数的返回值return

首先是前一天问题的答案 第一题: <!DOCTYPE html> <html lang="en"> <heda> <meta charset="UTF-8">  <title></title> </head> <body> </body> </html> 第二题: 结构-HTML 表现-CSS 行为-JavaScript 第三题 <!DOCT

递归函数返回值学习

分析以下代码 int dp(int i) { int& ans=d[i]; //为该表项声明一个引用,简化对它的读写操作. if(ans>0) return ans; ans=1; for(int j=0;j<n;j++){ if(G[i][j]){ int tmp=dp(j); ans=ans>tmp+1?ans:tmp+1; } } return ans; } 这是个DAG下的动态规划.是矩形嵌套的dp函数.粘这个代码的原因是为了反复体会这个ans在这个递归函数中的使用技巧.

基本用法:2《定义函数def、返回值return、元组tuple》

2 <定义函数def.返回值return.元组tuple>  [功能] 返回函数return ' '不需要立刻print,先存起来需要再print() (1)[局部变量]和[全局变量] 1 #(1)[局部变量]和[全部变量] 2 # A.[局部变量]函数内部定义,只能内部使用,外部不能使用 3 def egg(): 4 global a # 声明a是全局变量,print(a+2) 就不会报错了 5 a=108 6 print(a+1) 7 egg() 8 print(a+2) 9 10 # B

函数的返回值 return

# ### 函数的返回值 return """ return: 自定义返回值 , 返回到哪里? 返回到函数的[调用处] 1.return 后面可以跟上六大标准数据类型 , 除此之外,可以跟上 类对象,函数,如果不写return ,默认返回None 2.return 如果执行了return ,意味着 return后面得所有代码,统统不执行,函数终止了. """ #(1) return 后面的数据类型 def func(): # return 1 #

python之路——函数返回值return

return关键字 没有返回值 返回一个值 返回多个值 1.没有返回值 ----不写return的情况下,会默认返回一个None:下面的函数,就没有写return,这就是没有返回值的一种情况. #函数定义 def mylen(): """计算s1的长度""" s1 = "hello world" length = 0 for i in s1: length = length+1 print(length) #函数调用 str_

Python赋值没有返回值+笔试

>>> def test(): i = 1 return i=2 SyntaxError: invalid syntax 原因是python 中赋值语句没有返回值,这里不是C++

python os.system()返回值判断

最近遇到os.system()执行系统命令的情况,上网搜集了一下资料,整理如下,以备不时之需,同时也希望能帮到某些人. 一.python中的 os.system(cmd)的返回值与linux命令返回值(具体参见本文附加内容)的关系 大家都习惯用os.systemv()函数执行linux命令,该函数的返回值十进制数(分别对应一个16位的二进制数).该函数的返回值与 linux命令返回值两者的转换关系为:该函数的返回值(十进制)转化成16二进制数,截取其高八位(如果低位数是0的情况下,有关操作系统的

Python函数之返回值、作用域和局部变量

一.函数返回值 说到返回值,相信大家肯定都认识,没错,就是return. 所谓返回值可以这样理解:函数外部的代码要想获取函数的执行结果,就可以在函数里用return语句把结果返回. 那具体怎么用呢?接着往下看: #!/usr/bin/env python3 #-*- coding:utf-8 -*- # write by congcong # return 表示一个程序的结束,他可以返回任意的元素,列表或字典 def stu_info(name,age,course): print(name,a

第八讲 python自定义函数返回值

注意自定义函数:统一文件内函数名称不能相同. 单返回值 语法结构: def function_name([para1,para2...]) code... code... ... return value--------------可以返回一个值 eg: def test_c(n1,n2):-------------函数定义    n=n1+n2    return n sum1=test_c(100,102)----------函数调用----最好不要用sum,因为sum为关键字print '