思路:先递归调用本算法,反转打印除去第一个字符外的字符串,再打印出第一个字符即可。
时间复杂度:设n为字符串的长度,该算法访问每个字符各一次,时间代价为O(n)。
扩展:从键盘读入一个任意长的字符串,该字符串以“.”作为结尾,要求打印除出它的倒序字符串(不包含".")。
程序代码1:
void printRevString(char *s)
{
if(s[0] == '\0') //空串
return;
if(s[1] == '\0') //只有一个字符
putchar(s[0]);
else
{
printRevString(s+1); //反转打印除第一个字符外的字符串
putchar[s[0]);
}
}
程序代码2(扩展):
void reverse(void)
{
int newchar;
newchar = getchar();
if(newchar == '.')
return;
else
{
reverse();
putchar(newchar);
}
}