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

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

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


眼眸繁星
浏览 816回答 1
1回答

HUX布斯

每一个函数在末尾都隐藏了一句&nbsp;return None,除非你写了自己的return语句def&nbsp;search(num): &nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;seq&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;len(seq)&nbsp;==&nbsp;1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(seq[0])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;seq[0]&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;num&nbsp;<&nbsp;seq[len(seq)//2]: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;seq&nbsp;=&nbsp;seq[0:len(seq)//2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(seq)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;search(num)&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;num&nbsp;>&nbsp;seq[len(seq)//2]: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;seq&nbsp;=&nbsp;seq[len(seq)//2+1:]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(seq)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;search(num)&nbsp;&nbsp;&nbsp;&nbsp;else:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;seq[len(seq)//2] seq&nbsp;=&nbsp;[1,&nbsp;2,&nbsp;3,&nbsp;4,&nbsp;5,&nbsp;6,&nbsp;7,&nbsp;8] seq.sort()print(seq[:])print(search(4))
打开App,查看更多内容
随时随地看视频慕课网APP