Python Bin, Sort, Recusion и Index числа - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь найти индекс числа в массиве (списке), но иногда он попадает в оператор 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. Это работает только на некоторых значениях. В любом случае, я был бы признателен за любой свет, который можно пролить на эту проблему. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...