[英]Find longest word C with recursion
我正在尝试在结构数组中查找最长单词的大小。 我有这个结构数组:
struct Vocabolo{
char parola[20];
char *sinonimi[5];
char definizione[300];
};
typedef Vocabolo vocabolo;
vocabolo parole[30];
现在,我必须使用增量递归来查找数组中最靠后的单词的大小。 每个词包含在:
parole[n].parola
我正在使用此代码:
int Lunghezza_parola(vocabolo *parole,int n){
int y;
if(n == 1)
return strlen(parole[0].parola);
else {
y = strlen(parole[n-1].parola);
return Scegli_max(y,Lunghezza_parola(&parole,n-1));
}
}
Wnere Scegli_max
是:
int Scegli_max(int y, int lunghezzaStringa){
if (y >= lunghezzaStringa)
return y;
else
return lunghezzaStringa;
}
在此程序中,用户必须手动插入单词,并且每次插入单词时,该程序都应按字母顺序将它们放入。
如果我尝试输入“ come”作为parole[0].parola
和“ hi” parole[1].parola
并启动此函数,则结果为3。似乎最长的单词位于最后一个单词时,它似乎也起作用数组的位置。
任何想法?
PS:这是较长程序的一部分,因此不可能在此处编写所有代码,但我敢肯定,此功能可以正常工作,因此单词在struct数组中的顺序正确。
您的问题是return Scegli_max(y,Lunghezza_parola(&parole,n-1));
您调用Lunghezza_parola,给它&parole,它已经是vocabolo *parole
因此它变成了vocabolo **parole
,指针现在无效。
尝试更改您的退货以return Scegli_max(y,Lunghezza_parola(parole,n-1));
您的问题是该行return Scegli_max(y,Lunghezza_parola(&parole,n-1));
。 删除&
。
您应该传递指针的值,而不是指向它的指针。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.