|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 无聊才上线 于 2017-1-25 21:11 编辑
做第30讲的作业,发现的一个问题。
list2 = []
def search(target,key,flag = 0):
flag = target.find(key,flag)
if flag != -1:
list2.append(flag+1)
search(target,key,flag+1)
else:
return list2
a = search('开始的开始我们都是孩子,最后的最后……','开始')
print(a)
(这是写法1)
以上代码照我的理解,第一次flag=0,list2.append(0),然后递归flag=1,list2.append(4),接着递归flag=4,执行else的return list2
这样运行print就可以打印出list2了,但是结果函数没有给返回值???
----------------------------------------下面是改进----------------------------------
为了能有返回值,在递归前加上return就神奇的好了!!!(这是写法2)
那么问题来了,我不写return不也在list2里append进flag了吗?我只要执行函数把值append进list2就可以了啊?为什么递归函数还要return呢??? |
|