int count(string s){
if(s == "")
return 0;
if(s.length == 1)
return 1;
return 1 + count() //This is what I can't figure out. How to traverse the string.
//I just need a hint, not a full on answer.
}
Я не знаю, как пройти строку.
Подсказка: используйте substr()
в вашей рекурсии.
Также у вас есть два базовых случая. У одного из них есть три вопроса:
Я не думаю, что ваш пример имеет какой-либо смысл, вы используете length
который уже возвращает длину в вашем расчете. Если бы я был вашим наставником, я бы не принял это как правильное решение.
Вам, вероятно, нужно использовать const char*
int count(const char* s){
if(*s == '\0')
return 0;
return 1 + count(s + 1);
}
Может быть, вы хотели бы использовать substr
,
Если ваша цель — пройти строку, я предлагаю использовать итератор (см. std::string::begin
).
template<typename It>
int count(It const begin, It const end)
{
return (begin != end ? count(begin + 1, end) + 1 : 0);
}
int count(std::string const& s)
{
return count(s.begin(), s.end());
}
Я знаю, что вы хотите решение C ++, но все же. Иногда C лучше, чем C ++.
int count (const char * s) { если (* s == 0) вернуть 0; иначе вернуть 1 + количество (++ с); };
Вызов как счетчик (str.c_str ()).
#include<stdio.h>
main(){
char str1[100];
gets(str1);
int i=0;i=len(str1,i);printf(" \nlength of string is %d",i);
}
int len(char s1[],int i) {
printf("\n%c",s1[i]);
int sum=0,count =1;
if(s1[i] == '\0') return 0;
else
return (count += len(s1,++i));
}