二分探索を実装しようとしています。順序付けられたリストを取得し、中間値を取得してターゲット値と比較し、ターゲットが見つかるかリストから欠落するまで、中間値の上または下にサブリストを作成します。ただし、何らかの理由で、中間点がターゲットでない限り、常に「なし」が返されます。何が問題なのかわかりません。
def bisect(list,target):
print list
split= list[len(list)//2]
print "Split value : " + str(split)
if target==split:
return "target"
elif target<split:
bisect(list[:split],target)
elif target>split:
bisect(list[(split):],target)
a= [1,2,3,4,5,6,7,8,9,10]
print bisect(a,2)
Output:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Split value : 6
[1, 2, 3, 4, 5, 6]
Split value : 4
[1, 2, 3, 4]
Split value : 3
[1, 2, 3]
Split value : 2
None
分割とターゲット値の間の最後の比較が行われていないように見えますか?