我需要创建一个递归函数,它获取两个char数组,并返回第一个索引,其中“subStr”出现在“str”中。
功能签名:
int strIndex(char str[], subStr[]);
例如 - 对于str =“abcdebc”和subStr =“bc”,它将返回1(因为1是str中包含subStr的第一个索引),对于str =“ab”和subStr =“ab”它将返回0。 如果subStr不包含在str中(例如str =“abc”,subStr =“aa”),则返回-1。
这就是我试图做的事情:
int strIndex(char str[], char subStr[])
{
if (strcmp(str, subStr) == 0)
return 0;
else if (strcmp(str + (strlen(str1) - strlen(subStr)), subStr) == 0)
return strlen(str) - strlen(subStr);
else
//return without the last element of "str" array
}
但是可以在没有数组的最小元素的情况下调用递归吗?
答案 0 :(得分:1)
该功能可以按以下方式查看
ruby filename.rb
程序输出
#include <stdio.h>
#include <string.h>
int indexOf( const char *s1, const char *s2 )
{
size_t n1 = strlen( s1 );
size_t n2 = strlen( s2 );
if ( n1 < n2 )
{
return -1;
}
else if ( strncmp( s1, s2, n2 ) == 0 )
{
return 0;
}
else
{
int rtn = 1 + indexOf( s1 + 1, s2 );
return rtn == 0 ? -1 : rtn;
}
}
int main( void )
{
const char *s = "abcdebc";
const char *t = "bc";
printf( "Index of \"%s\" in \"%s\" is %d\n", t, s, indexOf( s, t ) );
}