Мышление с точки зрения рекурсии может быть немного сложным. Не вдаваясь в детали того, почему или почему не следует использовать рекурсию, давайте предположим, что это должна быть рекурсия (домашняя работа, открытие, независимо от причины).
Таким образом, главное, что следует учитывать при рекурсии, - это условие завершения . Если у вас возникли проблемы, возможно, написание алгоритма итеративным способом поможет вам.
В этом случае вам нужно определить, когда заканчивается массив символов. Это будет иметь место, если текущий символ '\0'
.
Простой рекурсивный алгоритм может быть:
- Проверить текущий символ. Это '\ 0'?
- Да: Возврат 0
- Нет. Является ли текущий символ буквой?
- Да: вернуть 1 + вызвать эту функцию с увеличенным символьным указателем
- Нет: вернуть 0 + вызвать эту функцию с увеличенным символьным указателем
Обратите внимание, что этот алгоритм не прекратит работу после того, как увидит не буквенный символ, поэтому "test a" вернет 5, а не 4. Если вам нужно завершить раньше, вам понадобится флаг какого-то типа, который передается в функция.
В любом случае, я хотел подумать о том, каким должно быть условие завершения .