Я уже почти десять дней сижу на коде. Я пишу funtion, который получает два указателя для двух разных строк, и функция должна возвращать 1, если имеется такое же количество слов, или 0, если нет.Сравнение строки
Мне не разрешено использовать какой-либо lib, глобальный или статический int и т. Д., Нет циклов, только рекурсия, не разрешается изменять подпись функции. То, что я написал, является дельтами между двумя предложениями. Сначала мой код вычисляет сумму слов в первом предложении, когда он достигает «\ 0» первого предложения, он начинает работать над вторым предложением и вычитает каждый раз, когда есть слово. прямо сейчас выход моего Funtion является дельта, я хочу, чтобы как-то сказать функцию, если дельта («возвращение») 0 возвращение 1, в противном случае возврат 1.
"
int same_num_words(char *s1, char *s2)
{
printf("%s\n", s1);
printf("%s\n", s2);
if(s1[0]=='\0' && s2[0] == '\0')
{
return 0;
}
if (s1[0] == '\0') // AFTER first sentence is complete, substract the second sentence count.
{
if(s2[0]!= ' ' && s2[1]== ' ')
{
return same_num_words(s1, s2+1) -1 ;
}
if(s2[0]!= ' ' && s2[1]== '\0')
{
return same_num_words(s1, s2+1)-1;
}
return same_num_words(s1, s2+1);
}
if(s1[0]!='\0') // first sentence
{
if((s1[0]!= ' ' && s1[1]== ' ') || (s1[0]!= ' ' && s1[1]== '\0')) // first sentence
{
return same_num_words(s1+1, s2)+1;
}
}
return same_num_words(s1+1, s2);
}
"
любая помощь
Я думаю, вам будет проще иметь рекурсивную функцию count_words(), которую вы вызываете для обоих предложений, а затем сравниваете результаты. –
* «если дельта (« возврат ») равна 0 return 1, else return 1.» * Это опечатка? Вы имели в виду сказать: * «если delta (« return ») равно 0 return 0, else return 1." * –
Если инструкция состоит в том, что 'same_num_words()' * self * будет рекурсивным и не должен звонить другому рекурсивная вспомогательная функция (я не могу это прочитать). Я не могу думать ни о каком другом пути, кроме как пройти мимо.как рекурсивный уровень, чтобы решить, что вы должны возвращать 0/1 вместо дельта слов или иметь дополнительную переменную 'int *' для дельта и всегда возвращать 0/1. В обоих случаях у вас есть дополнительный параметр, который вообще не имеет смысла для внешнего вызывающего абонента этой функции, но я думаю, что это потому, что сама инструкция не имеет смысла ... –