我的目标是调用一个函数,如果发送的字符串有函数,函数将返回0/1 在其中发送子字符串,我不需要找到它的索引 例如:
字符串:“Hello World”
子串:“rl”
将返回1
字符串:“asssbdsd”
子串:“ab”
将返回0
所以我想出了这个解决方案:
int HasSubstr(char* mainStr, char* subStr)
{
if (!*subStr)
{
return 1;
}
if (!*mainStr)
{
return 0;
}
if (*mainStr == *subStr)
{
return HasSubStr(mainStr + 1, subStr + 1);
}
else
{
while(*(subStr -1))
{
subStr--;
}
return HasSubStr(mainStr + 1, subStr);
}
}
但它不是一个纯粹的递归,我需要它是一个纯粹的递归 ,帮助将大量应用
是的,这是家庭作业
答案 0 :(得分:3)
不要试图在一个功能中适应它。
int StartsWith(const char *mainstr,const char *subStr)
{
if (*subStr == '\0') return 1;
if (*mainStr != *subStr) return 0;
return StartsWith(mainStr+1,subStr+1);
}
int HasSubstr(const char *mainStr,const char *subStr)
{
if (StartsWith(mainStr,subStr)) return 1;
if (*mainStr == '\0') return 0;
return HasSubstr(mainStr+1,subStr);
}