字符串逆序输出--递归

  说到递归,很容易想到n!,斐波那契数列(数兔子问题),当然这些都是很好理解的问题。个人认为,最能反映递归实质的是汉诺塔和字符串逆向输出问题。汉诺塔问题只需要思考一步,其他难题就交给计算机吧,这很好的证明了递归就是懒人专用算法。仅凭这一点,就足以掩盖递归效率低下的缺陷。我们都知道,递归就是函数调用自身的过程。在c语言中,函数调用自身和调用其他函数,没有一点区别。都是保存现场,函数调用,恢复现场的过程,这是通俗的说法,用我们专业的术语来说,递归的实质就是入栈和出栈的过程。解释到这里,用递归实现字符串逆序输出问题就很好解决了。直接上代码,理解这个问题,抓住整个入栈出栈的本质就好。

code:

  4  *       Filename:  22.c
  5  *
  6  *    Description:  
  7  *
  8  *        Version:  1.0
  9  *        Created:  2014年12月29日 09时02分57秒
 10  *       Revision:  none
 11  *       Compiler:  gcc
 12  *
 13  *         Author:  3me (), 
 14  *   Organization:  
 15  *
 16  * =====================================================================================
 17  */
 18 #include <stdlib.h>
 19 #include <stdio.h>
 20 /* 
 21  * ===  FUNCTION  ======================================================================
 22  *         Name:  print
 23  *  Description:  
 24  * =====================================================================================
 25  */
 26     void
 27 print (  )
 28 {
 29     int c;
 30     if ( (c = getchar()) != -1 )
 31         print();
 32     else
 33         printf("\n");
 34     if ( c != -1 )
 35         printf("%c", c);
 36     return;
 37 }   /* -----  end of function print  ----- */
 38 /* 
 39  * ===  FUNCTION  ======================================================================
 40  *         Name:  main
 41  *  Description:  
 42  * =====================================================================================
 43  */
 44     int
 45 main ( int argc, char *argv[] )
 46 {
 47     print();
 48 
 49     return EXIT_SUCCESS;
 50 }       /* ----------  end of function main  ---------- */
 51 
                    

转载于:https://www.cnblogs.com/3me-linux/p/4191046.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值