我通常很好地理解递归,但是因为我是 C 函数strcpy
和指针的新手,所以我无法弄清楚这种递归如何反转字符串:
char *reverse(char *string)
{
if (strlen(string) <= 1)
return string;
else
{
char temp = *string;
strcpy(string, reverse(string+1));
*(string+strlen(string)) = temp;
return string;
}
}
这strcpy
部分对我来说似乎有点复杂,这行的目的是什么:
*(string+strlen(string)) = temp;
?
我意识到在翻转字符串后,您需要将开头的字符添加到字符串的结尾,但我不确定我是否理解这段代码背后的逻辑。