给定一个字符串“ABCDEFGHI”,用递归的方式将其反转。
思路:每次进行首尾字符交换,
第一次,将A和I交换,此时变成 IBCDEFGHA,此时递归的字符串应该变成其子串“BCDEFGH”
第二次,将B和H交换,此时变成 IHCDEFGBA,此时递归的字符串应该变成其子串“CDEFG”
依次递归下去,直到只剩一个字符,无法进行其它交换为止。
- void Func(char* p, int N)
- {
- assert(p != NULL);
- if (N == 1)
- {
- return;
- }
- else
- {
- char ch = p[0];
- p[0] = p[N-1];
- p[N - 1] = ch;
- Func(p+1, N - 2);
- }
- }
- 测试代码:
- char p[] = "ABCDEFGHI";
- Func(p, 9);