Признаюсь, я не знаю много о питоне, но это легко.
Хитрость в том, что последняя строка.
Сначала "return" проверяет, есть лине -1, что означало бы, что текущая рекурсия этой функции не нашла лишний «ключ» в «target», в этом случае условие после «и» не будет оценено, и функция вернет «false» (нулю) к вызывающей функции.
Если «x» действительно не равен -1, однако, вторая часть условия (после «и») будет оценена, и то, что делает этот оператор, вызывает функциюсамо по себе, но отправляет подстроку текущей вычисляемой «цели», начиная с одного символа после «x» (позиция «ключа» в «цели» в текущей рекурсии).Затем он добавляет единицу к значению, возвращаемому функцией, и возвращает сумму.
Итак, последняя рекурсия функции возвращает ноль (false), одна до этого возвращает одну (true), другая до этогоодин возвращает два (true + 1) и т. д.
Это может показаться немного запутанным, но это лучший способ найти ответ на ваш вопрос.