arr[len - 1] = tmp;这行代码为什么会在if语句后面,递归的时候tmp储存的值不会丢失吗? 可不可以写到if语句前面?
不会丢,因为每一次的调用会分配独立的存储空间给局部变量。
不能换。提前后字符串后续要处理的子串就不是以\0结尾了,也就无法正常换序
#include <iostream>
void reverse_str (char *p);
int main ()
{
char str[100];
gets (str);
reverse_str (str);
return 0;
}
void reverse_str (char *p)
{
if(*p)
{
reverse_str (p+1);
putchar (*p);
}
}
供参考:
#include <stdio.h>
void reverse(char* str)
{
char* p = str, c;
while (*p) p++;
p--;
if (str < p) {
c = *str;
*str = *p;
*p = '\0';
reverse(str + 1);
*p = c;
}
}
int main()
{
char buf[100];
scanf("%s", buf);
reverse(buf);
printf("%s\n", buf);
return 0;
}
递归啊,搜索完要恢复数据,继续搜!
希望对题主有帮助!