递归反转一个字符串

给定一个字符串“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); 

你可能感兴趣的:(测试,null)