请教一道关于递归的习题

来源:百度知道 编辑:UC知道 时间:2024/06/09 01:31:47
下面函数用递归调用的方法,将str中存放的长度为n的字符串反转过来,例如原来是"ABCDE",反序为"EDCBA"。
void invent(char *str,int n)
{ char t;
t=*str; *str=*(str+n-1); *(str+n-1)=t;
if( n>2 ) invent ( ① ,n-2);
else ② ;
}
哪位高人能帮我说明下这题的两处该如何填写
能讲解一下解题思路吗

#include <stdio.h>
void invent(char *str,int n)
{ char t;
t=*str; *str=*(str+n-1); *(str+n-1)=t;
if( n>2 ) invent (str+1 , n-2);
else return;
}
void main ()

{
char str[] = "ABCDE";
invent(str, 5);
printf("%s\n", str);
}
这样的话可以达到你的要求,我把对应的main给出来了。如果main中不是[]而是char *str的话就会出错。
两个地方改为++str , return也得到结果。

2 str+1
3 return;