递归图解:
每次递归时,都会创建一个字符变量C来保存字符串首位元素,
然后将字符串末尾元素赋给首位
同时字符串的起始位置都会向后推移一位,而结尾位置都会向前推移一位,
而在递归完成后,会将C中保存的字符赋给字符串结尾位置,以实现字符串的逆置
代码实现:
#include
void reverse_string(char* string)
{
char c;
int len = strlen(string);
if (len > 1) //每次递归 len的值都会减2(同时每次递归首位置和末尾位置都不同)
{
c = string[0]; //每次递归都会创建一个 字符变量c,用来保存首元素
string[0] = string[len - 1]; //把末尾元素赋给首元素
string[len - 1] = '\0'; //把末尾位置置为 '\0'
reverse_string(string + 1);
string[len - 1] = c; //将首元素放入末尾位置
}
}
int main()
{
char string[] = "qwertyuiop";
printf("逆置前: %s\n", string);
reverse_string(string);
printf("逆置后: %s\n", string);
return 0;
}
运行结果:
逆置前: qwertyuiop
逆置后: poiuytrewq
请按任意键继续. . .