Сколько раз буква встречается в строке

Описание задачи

Программа принимает на вход строку и букву. Надо определить (с использованием рекурсии), сколько раз данная буква встречается в строке.

Решение задачи

  1. Принимаем на вход строку и букву, записываем их в разные переменные.
  2. Передаем эти переменные в качестве аргументов в рекурсивную функцию.
  3. В качестве базы рекурсии примем условие, что строка является непустой.
  4. Если строка является непустой, то работа функции продолжается и мы смотрим, совпадает ли первый символ строки с проверяемой буквой, или нет. Если совпадает, то мы увеличиваем счетчик на единицу.
  5. Далее мы передаем строку без первой буквы снова в функцию, и все повторяется заново.
  6. Когда строка станет пустой, функция вернет нам количество вхождений буквы в строке. Выведем этот результат на экран.
  7. Конец.

Исходный код

Ниже дан исходный код программы для рекурсивного определения количества вхождений буквы в строку. Результаты работы программы также даны ниже.

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))

Объяснение работы программы

  1. Пользователь вводит строку и букву, которые записываются в отдельные переменные string и ch.
  2. Далее эти переменные передаются в качестве аргументов в рекурсивную функцию check().
  3. Для того чтобы функция продолжала свою работу, необходимо, чтобы строка была непустой. Если строка является пустой, функция завершает свою работу и возвращает 0.
  4. На следующем шаге рекурсивная функция проверяет, совпадает ли буква в переменной ch с первой буквой в строке. Если совпадает, то в выходное значение добавляется 1, к которой прибавляется функция check(), в которой в качестве аргумента передается наша строка, но уже без первой буквы. Если нет, то просто вызывается функция check(), где в качестве аргумента также строка без первой буквы.
  5. Так повторяется до тех пор, пока строка не станет пустой.
  6. После этого результат выводится на экран.

Результаты работы программы

Пример 1:
Введите строку:abcdab
Введите букву для проверки:b
Количество вхождений:
2
 
Пример 2:
Введите строку:hello world
Введите букву для проверки:l
Количество вхождений:
3