我通常理解遞歸得很好,但因爲我是新來的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;
?
我意識到,翻轉字符串後,你需要添加字符在開始到字符串結束,但我不知道我明白這個代碼背後的邏輯。
這裏的strcpy()是危險的,因爲目標和源可以重疊。 Memmove()將是適當的。 (但很難得到正確的) – wildplasser