Я пытаюсь написать рекурсивный алгоритм, который позволяет подсчитать указанную букву пользователем. Но я застрял в двух случаях. Во-первых, я думаю, что я должен получить 2
в результате, я не могу. Во-вторых, если нет предельного ключа, например, предельного символа, указанного как z
пользователем, как символы могут быть отсканированы до конца символа здесь g
? Проблема немного сложная для меня. Мне нужны ваши советы и идеи. Спасибо всем благодарным ответам.Указанное количество букв с рекурсией
пример строка: how are you i am testing
еще примеры:
#include <stdio.h>
int lettercount(char* str, char key, char limit);
int main(){
char test[]="how are you i am testing";
int num;
num=lettercount(test,'a','t');
printf("%d",num);
return 0;
}
int lettercount(char* str, char key, char limit)
{
int count = 0;
if(str[0] == limit)
{
return 0;
}
else if(str[0] == key)
{
lettercount(&str[1], key, limit);
count++;
}
else
lettercount(&str[1], key, limit);
return count;
}
Вам нужно проверить, является ли str [0] терминатором NUL '' \ 0'', кроме проверки того, равен ли он 'limit'. Кроме того, вы возвращаете 'count' из функции' lettercount', но вы игнорируете возвращаемое значение при вызове функции рекурсивно. – user3386109
umm да, вы правы насчет NULL. Я вернул счет? @ user3386109 –
Последняя строка вашей функции - 'count count;' – user3386109