Рекурсивная функция не возвращает?

Я написал следующую функцию, чтобы реализовать свой собственный двоичный поиск

def bisect(input, target): mid = len(input)/ 2 if len(input) == 1: if input[0] == target: return 1 else: return None elif input[mid] > target: bisect(input[:mid], target) elif input[mid] <= target: bisect(input[mid:], target) 

Я знаю, что моя реализация отключена, но мне более любопытно понять рекурсивный стек.

  • Поиск самой длинной подстроки в алфавитном порядке
  • Какова максимальная глубина рекурсии в Python и как ее увеличить?
  • Регулярное выражение для обнаружения замкнутых циклов C ++ для циклов while и while
  • pip install -upgrade sqlalchemy дает максимальную глубину рекурсии
  • Рекурсия Python max, вопрос о sys.setrecursionlimit ()
  • Как определить рекурсивную функцию для объединения двух отсортированных списков и возврата нового списка с возрастающим порядком в Python?
  • Когда я вызываю bisect(['d','e'], 'd') , моя функция должна возвращать значение

     bisect(['d'], 'd') 

    но вместо этого он возвращает None. Кроме того, когда я вызываю bisect(['d'], 'd') напрямую, я получаю правильное значение 0. Как это возможно?

  • Python: Как игнорировать исключение и продолжить?
  • фатальный python error pygame парашют
  • Как перенаправить запрос в Python?
  • Python государственный дизайн машины
  • CSV для Python Dictionary со всеми именами столбцов?
  • Как проверить, находится ли задача уже в очереди python?
  • One Solution collect form web for “Рекурсивная функция не возвращает?”

    Вы игнорируете возвращаемые значения рекурсивных вызовов. Вам также необходимо явно вернуть их:

     elif input[mid] > target: return bisect(input[:mid], target) elif input[mid] <= target: return bisect(input[mid:], target) 

    Рекурсивные вызовы аналогичны любым другим вызовам функции; они возвращают результат вызывающему. Если вы проигнорируете возвращаемое значение, а функция вызова заканчивается, вы получаете эту функцию вызова, а затем вместо этого возвращаете None .

    Python - лучший язык программирования в мире.