为了账号安全,请及时绑定邮箱和手机立即绑定

return之前有值,return之后返回None,为什么

/ 猿问

return之前有值,return之后返回None,为什么

眼眸繁星 2018-07-31 11:10:31
def search(num,seq=[]):    if len(seq)==1:        print(seq[0])        return seq[0]    elif num<seq[len(seq)//2]:
        seq=seq[0:len(seq)//2]
        search(num,seq=seq[:])    elif num > seq[len(seq)//2]:
        seq=seq[len(seq)//2+1:]
        search(num,seq=seq[:])    else:        return seq[len(seq)//2]

seq=[1,2,3,4,5,6,7,8]
seq.sort()print(seq)print(search(4,seq=seq[:]))
[1, 2, 3, 4, 5, 6, 7, 8]4None

望解决,这是一个二分法使用案例


查看完整描述

1 回答

?
HUX布斯

每一个函数在末尾都隐藏了一句 return None,除非你写了自己的return语句

def search(num):
    global seq    if len(seq) == 1:        print(seq[0])        return seq[0]    elif num < seq[len(seq)//2]:
        seq = seq[0:len(seq)//2]        print(seq)        return search(num)    elif num > seq[len(seq)//2]:
        seq = seq[len(seq)//2+1:]        print(seq)        return search(num)    else:        return seq[len(seq)//2]


seq = [1, 2, 3, 4, 5, 6, 7, 8]
seq.sort()print(seq[:])print(search(4))


查看完整回答
反对 回复 2018-08-25
  • 1 回答
  • 0 关注
  • 230 浏览
我要回答
慕课专栏
更多

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信