Solution: Index
def index(item, seq):
return -1 if not seq else (0 if item == seq[0] else (1 + index(item, seq[1:])))
might look like a good attempt, but it is not. You cannot return -1 for unsuccesful tries in this way. You must interfere in the “upward” flow of the recursion.
def index(item, seq):
if not seq:
return -1
elif item == seq[0]:
return 0
rest_index = index(item, seq[1:])
if rest_index == -1:
return -1
else:
return 1 + rest_index