3

我的目标是调用一个函数,如果发送的字符串中包含发送的子字符串,该函数将返回 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);
    }
}

但它不是一个纯递归,我需要它是一个纯递归,帮助将被广泛应用

是的,这是作业

4

1 回答 1

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);
}
于 2012-12-06T14:53:34.500 回答