Описание задачи
Программа принимает на вход строку и букву. Надо определить (с использованием рекурсии), сколько раз данная буква встречается в строке.
Решение задачи
- Принимаем на вход строку и букву, записываем их в разные переменные.
- Передаем эти переменные в качестве аргументов в рекурсивную функцию.
- В качестве базы рекурсии примем условие, что строка является непустой.
- Если строка является непустой, то работа функции продолжается и мы смотрим, совпадает ли первый символ строки с проверяемой буквой, или нет. Если совпадает, то мы увеличиваем счетчик на единицу.
- Далее мы передаем строку без первой буквы снова в функцию, и все повторяется заново.
- Когда строка станет пустой, функция вернет нам количество вхождений буквы в строке. Выведем этот результат на экран.
- Конец.
Исходный код
Ниже дан исходный код программы для рекурсивного определения количества вхождений буквы в строку. Результаты работы программы также даны ниже.
def check(string, ch): if not string: return 0 elif string[0] == ch: return 1 + check(string[1:], ch) else: return check(string[1:], ch) string = raw_input("Введите строку:") ch = raw_input("Введите букву для проверки:") print("Количество вхождений:") print(check(string, ch))
Объяснение работы программы
- Пользователь вводит строку и букву, которые записываются в отдельные переменные
string
иch
. - Далее эти переменные передаются в качестве аргументов в рекурсивную функцию
check()
. - Для того чтобы функция продолжала свою работу, необходимо, чтобы строка была непустой. Если строка является пустой, функция завершает свою работу и возвращает
0
. - На следующем шаге рекурсивная функция проверяет, совпадает ли буква в переменной
ch
с первой буквой в строке. Если совпадает, то в выходное значение добавляется1
, к которой прибавляется функцияcheck()
, в которой в качестве аргумента передается наша строка, но уже без первой буквы. Если нет, то просто вызывается функцияcheck()
, где в качестве аргумента также строка без первой буквы. - Так повторяется до тех пор, пока строка не станет пустой.
- После этого результат выводится на экран.
Результаты работы программы
Пример 1: Введите строку:abcdab Введите букву для проверки:b Количество вхождений: 2 Пример 2: Введите строку:hello world Введите букву для проверки:l Количество вхождений: 3