您的位置:首页 > 其它

递归反转一个字符串

2010-05-19 01:11 211 查看
给定一个字符串“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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: