核心
- 如何递
- 如何归
- 上图:
具体实现
char* reverse_string(char * str){
int len = strlen(str);//求得当前字符串的长度
if (*str){
char tmp = *str;
*str = str[len - 1];
str[len - 1] = '\0';
reverse_string(str + 1);//每次递,指针向后移动 1 位
str[len - 1] = tmp;//在归的时候,把 tmp 的值 赋值给每一层的 str[len- 1]
}
return str;
}
int main() {
char str[6] = { 'a', 's', 'd', 'f', 'g' };
printf("%s\n", str);
reverse_string(str);
printf("%s\n", str);
return 0;
}