Я пытаюсь найти индекс числа в массиве (списке), но иногда он попадает в оператор if (если верхний <нижний), даже если это неверный оператор. </p>
def recurse(lower,upper,result,target):
if upper < lower:
print("Error, Upper is less then Lower")
return -999
midpoint = (lower + upper)//2
guess = result[midpoint]
if guess == target:
return midpoint
else:
if guess > target:
upper = midpoint -1
return recurse(lower,upper,result,target)
else:
lower = midpoint +1
return recurse(lower,upper,result,target)
result5 = recurse(0,30,result,215)
print("The index of that number is : ",result5)
Я сформировал массив случайной генерации и у меня есть 30 чисел, сгенерированных между 201 и 300
def randomList(array):
array = []
for x in range(29):
r = random.randint(201,300)
array.append(r)
return array
result = randomList(result)
print("Random list of 30 numbers between 201-300",result)
Я вставил результат списка [282, 215, 204, 295, 236, 232, 229, 218, 295, 214, 287, 295, 270, 212, 276, 255, 205, 204, 212, 228, 230, 265, 278, 204, 272, 226, 292, 284, 290]
Моя цель для функции recuse состоит в том, чтобы отобразить индекс числа, которое я посылаю, в целевом параметре. Иногда это на самом деле работает и скажет мне номер индекса, но иногда это не так. Я довольно озадачен. Прошу прощения за ошибки форматирования.
Результат от отправки целевого номера 215:
Индекс этого числа: 1
Это совершенно точно и работает, но проблема возникает, когда я нахожу другое число, скажем, 282, это должно дать мне 0. Но это дает мне мое возвращаемое значение -999. Или, когда я делаю 272, та же проблема, вернуть -999. Это работает только на некоторых значениях. В любом случае, я был бы признателен за любой свет, который можно пролить на эту проблему. Спасибо.