首页 新闻 搜索 专区 学院

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

0
悬赏园豆:20 [已解决问题] 解决于 2018-02-02 16:22
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]
4
None

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

环儿的主页 环儿 | 初学一级 | 园豆:186
提问于:2018-01-30 14:15
< >
分享
最佳答案
0

每一个函数在末尾都隐藏了一句 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))
收获园豆:20
BUTTERAPPLE | 老鸟四级 |园豆:2950 | 2018-01-30 15:17

谢谢

环儿 | 园豆:186 (初学一级) | 2018-02-02 16:21
其他回答(1)
0

楼上正解,递归时每一个判断分支都要return

nicky0227 | 园豆:1069 (小虾三级) | 2018-01-30 15:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册