Użycie rekurencyjnego algorytmu dwusiecznego do sprawdzenia, czy znak jest w łańcuchu

Obecnie prowadzę kurs programistyczny w edx, a moje instrukcje są następujące: Korzystając z idei wyszukiwania bisekcji, napisz algorytm rekurencyjny, który sprawdza, czy znak jest zawarty w ciągu, o ile ciąg jest w porządku alfabetycznym. Mój kod (python 2.7) jest tutaj:

def isitIn(char, aStr):
   m = aStr[len(aStr) // 2]
   if aStr == '' or len(aStr) == 1 or char == m:
      return False
   else:
      if char < m:
         return isitIn(char, aStr[:-1])
      elif char > m:
         return isitIn(char, aStr[1:])
   return isitIn(char, aStr)

Moje wyjaśnienie: zaczynam od znalezienia środkowego znaku ciągu. Jeśli jest równy postaci, zwraca False. Jeśli nie jest równy znakowi, sprawdza, czy znak jest niższy od znaku średniego, a następnie używa funkcji rekurencyjnej do utworzenia stosów i ostatecznie zwraca wartość logiczną True. Teraz użyłem indeksu -1 i 1, ponieważ nie chcę uwzględniać środkowego znaku.

Zamiast rozwiązania, wolałbym uzyskać wskazówki, ponieważ wciąż próbuję to rozgryźć, ale inna perspektywa nigdy nie boli. Dzięki!

Error message:
Test: isIn('a', '')
Your output:
Traceback (most recent call last):
File "submission.py", line 10, in isIn
m = aStr[len(aStr) // 2]
IndexError: string index out of range
Correct output:
False

questionAnswers(4)

yourAnswerToTheQuestion