递归实现字符串逆序输出(c++和c)

 

原文:http://hi.baidu.com/piter2010/item/73105536a638cac21b9696eb

如何用“递归”实现将字符串逆序输出

通常我们使用字符数组或链表等线性数据结构存放输入的字符串,然后变换各字符间的顺序,最后逆序输出。这里我要论述的是一种巧妙利用递归实现对输入字符串的翻转。 例如:考虑下面的代码:  
#include
using namespace std;
void reverse()
{
      char ch;
      cin.get(ch);
      if(ch!='\n')
      {
             reverse();
             cout.put(ch);
       }
}
int main()
{
      reverse();
      cout<     return 0;
}
分析:reverse函数首先将从输入流读入的字符读入ch变量,然后判断是否为回车字符,若是则返回,否则调用reverse(),之后输出该字符。cin.get(ch)可以读入输入流中的任何字符(包括空格、回车等),普通的cin>>ch则略过空格、回车等。

c的实现:

#include
void reverse()
{
    char c;
    if((c = getchar()) != '\n')
        reverse();
    if(c != '\n')
        putchar(c);
}

void main()
{
    reverse();
    printf("\n");

}

 

你可能感兴趣的:(递归实现字符串逆序输出(c++和c))