数据结构学到栈,刚好练一下递归
不多说,上代码
/* 递归,实现字符串倒置(测试ok)
* author: Qian Jp
* date: 2019-3-28
*/
#include <stdio.h>
//#include <string.h>
/*
* brief: 字符串倒置的递归函数
* param: 字符指针、结尾元素位置、开头元素位置
* return: 转置后的字符指针
*/
char converse_str(char *a, int end, int start){
int t = end;
if (end - start < 1){
return 0;
}
else
{
/* swap */
char tmp;
tmp = a[start];
a[start] = a[end];
a[end] = tmp;
start ++;
end --;
converse_str(a, end, start);
/*
for (int i =0; i <= t; i++){
printf("%c", *(a+i));
}
*/
return *a;
}
}
int main(){
int len;
int start;
int end;
printf("输入字符串长度: ");
scanf("%d", &len);
/*
char a[len];
for (int i = 0; i < len; i++){
scanf("%s", &a[i]);
}
*/
char *a;
printf("输入字符串: ");
scanf("%s", a);
printf("你输入的是: %s\n", a);
converse_str(a, len-1, 0); // 注意end 是 len-1,与数组类似
printf("倒置后的是: %s\n", a);
}