设计一个递归算法来实现字符串的逆序存储,要求不另设串存储空间。
测试输入:ABCDE12345.
;
预期输出: 5-->4-->3-->2-->1-->E-->D-->C-->B-->A
#include<iostream>
#include<cstring>
#define MAXSIZE 255
using namespace std;
void Inverse(char A[])
{//递归实现字符串的逆序存储
static int i = 0; //静态变量记录字符数组的下标
char ch;
cin >> ch;
if (ch != '.') //'.'是字符串输入结束的标志
{
/*********************Begin***********************/
Inverse(A);
A[i++] = ch;
/**********************End************************/
}
A[i] = '\0'; //字符串最后加上结尾标记
}
void Print(char A[])
{//输出逆序存储后的字符串
cout<<A[0];
for (int i = 1; i < strlen(A); i++)
{
cout <<"-->"<< A[i];
}
cout << endl;
}
int main()
{
char Arr[MAXSIZE];
Inverse(Arr);
Print(Arr);
return 0;
}
void Inverse(char A[])
{//递归实现字符串的逆序存储
static int i = 0; //静态变量,多次调用该函数时不会被初始化为0,用来记录字符数组的下标,
char ch; //字符变量
cin >> ch; //输入
if (ch != '.') //'.'是字符串输入结束的标志
{
/*********************Begin***********************/
Inverse(A);
A[i++] = ch; /*A[i] = ch;
i++; */
/**********************End************************/
}
A[i] = '\0'; //字符串最后加上结尾标记
}
使用递归也就是不断自己调用自己,将大的过程拆解成几个小的类似步骤。若输入ABCDE12345.,要逆序输出,就要先处理'.',然后是'5',将'5'存储在A[]中,然后是'4',依次全部存储到数组中去