问答题 编写一个递归过程,它从键盘读入一个任意长的字符串,该字符串以"."作为结束,要求打印出它的倒序字符串(不包含".")。
【正确答案】(1)思路
   假设用户输入了一个字符串,交由reverse()函数处理,处理过程应为:如果首字符为".",则结束;否则,先调用reverse()处理后面的字符串,最后打印首字符。这样,即可完成打印倒序字符串的功能。
   处理输入的方法是,在递归函数中直接用getchar()函数读取字符,由于是递归调用,所以实际的情况是能处理一个字符串,且理论上能读入任意长的字符串。
   (2)算法
   void reverse(void){
       int newchar;
       newchar=getchar();
       if(newchar=='.')
           return;
       else{
           reverse();
           putchar(newchar);
       }
   }
   (3)代价分析
   假定用户输入了长为n的字符串,需入、出栈各n次,共2n次,故时间代价为O(n)。
【答案解析】