0
def BinarySearch(aList, first, last, target):
assert 0 <= first < len(aList); last < len(aList)
if len(aList) == 0:
return False
pos = first + last/2
pos = round(pos)
if aList[pos] == target:
return pos
else:
if target <= aList[pos]:
return BinarySearch(aList[:pos], first, pos, target)
else:
return BinarySearch(aList[pos +1 :], pos + 1, last, target)
これは学校の問題で、引数は別の関数によって入力されます。テスト関数は6つの値を持つ配列を渡し、私のコードは最後のものではなく最初の3つを見つけます。再帰バイナリ検索でどこが間違っていますか?
あなたができる
は、リストをスライスならば残りの要素のインデックスに何が起こるか考えてみてください。 – tzaman
は紛失しています。私の考えは、配列の長さが小さいため、私は再帰呼び出しの引数を変更する必要があります。もしそうなら、何をすべきかわからない。 – Tom
'aList [:pos]'は 'pos'の値を含むかどうかですか?ヒント: 'range()'のようにうまく動作します。 – jszakmeister