不知道为什么这个问题对我来说太难了.迭代地,这是蛋糕,但是一旦堆叠展开,它就会破坏我的整个功能.
它正确地找到针并且如果找到它则给函数赋值true.但是,一旦调用堆栈展开,它就会一直恢复为false.有谁知道如何解决这个或我的代码我做错了什么?
这是我到目前为止所拥有的......
bool mySubStr(char * needle, char * haystack)
{
int needleLength = strlen(needle);
int haystackLength = strlen(haystack);
bool found = false;
if(needleLength < haystackLength)
{
if(strncmp(haystack, needle, needleLength) == 0)
{
found = true;
}
else
{
mySubStr(needle, haystack + 1);
}
}
return found;
}
Run Code Online (Sandbox Code Playgroud)
您需要将递归调用的结果返回到mySubStr(..):
bool mySubStr(char * needle, char * haystack)
{
int needleLength = strlen(needle);
int haystackLength = strlen(haystack);
if(needleLength > haystackLength)
return false;
if(strncmp(haystack, needle, needleLength) == 0)
{
return true;
}
return mySubStr(needle, haystack + 1);
}
Run Code Online (Sandbox Code Playgroud)
在您的实现中,您以递归方式调用该函数但丢弃了结果:
else
{
mySubStr(needle, haystack + 1);
}
}
return found;
Run Code Online (Sandbox Code Playgroud)
所以实际上,除非针头恰好在开头,否则你的函数总是会返回false.
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |