使用递归实现字符串反转,下面算法的复杂度为O(n),由内层递归向外依次打印可以逐步实现字符串的反转。
算法的C代码如下:
void RevString(char *s)
{
if(s[0] == '\0')
return;
if(s[1] == '\0')
putchar(s[0]);
else
{
RevString(s+1); //递归返回位置(*)
putchar[s[0]);
}
}
这里递归直至到字符串数组的最后的终止‘\0’字符,返回到上层的递归函数内执行putchar打印出最后一个字符,然后这个子函数调用结束,再回到上一层的递归函数(*)处,继续打印出倒数第二个字符串,如此以此类推,最后全部逆序打印出字符串。就可以完成字符串的反转