亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于return語句的詭異事件

關于return語句的詭異事件

天涯盡頭無女友 2018-08-05 06:09:40
def search(num,seq=[]):    if len(seq)==1:  #      print("3")#        assert seq[0]==num  #       num1=seq[0]         return seq[0]    elif num<seq[len(seq)//2]: #       print("2")         seq=seq[0:len(seq)//2]         search(num,seq=seq[:])        return 2    elif num > seq[len(seq)//2]:  #      print("1")         seq=seq[len(seq)//2+1:]         search(num,seq=seq[:])    else:   #     print("5")         return seq[len(seq)//2]def test(seq):    return 2seq=[1,2,3,4,5,6,7,8] seq.sort()print(search(6,seq=seq[:]))print(seq)print(test(seq))None [1, 2, 3, 4, 5, 6, 7, 8]2上例為實現二分法的示例,輸出search(6,seq)函數應該返回搜索值,但是總是返回None,請各位幫忙解決
查看完整描述

1 回答

?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

至少也應該是這樣的:

def search(num,seq=[]):    if len(seq)==1:        return seq[0]    elif num<seq[len(seq)//2]:
        seq=seq[0:len(seq)//2]        return search(num,seq=seq[:])    elif num > seq[len(seq)//2]:
        seq=seq[len(seq)//2+1:]        return search(num,seq=seq[:])    else:        return seq[len(seq)//2]def test(seq):    return 2seq=[1,1,2,3,4,5,6,7,8]
seq.sort()print(search(6,seq=seq[:]))print(seq)print(test(seq))

 

但你的代碼是返回搜索值(而非index),在不破壞源程序結構的情況下可以改成這樣來返回index:

 

def search(num,seq=[]):
    mid=len(seq)//2    if len(seq)==1:        return 0    elif num<seq[mid]:        return mid+search(num,seq=seq[0:mid])    elif num > seq[mid]:        return mid+search(num,seq=seq[mid+1:])    else:        return middef test(seq):    return 2seq=[1,1,2,3,4,5,6,7,8]
seq.sort()print(search(6,seq=seq[:]))print(seq)print(test(seq))


查看完整回答
反對 回復 2018-08-25
  • 1 回答
  • 0 關注
  • 667 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號