关于递归的理解

      之前看了许多关于递归的理解,还是是懂非懂的,这个问题一直纠结在心里。

      今天又碰到这个递归问题了,我认为一定要把问题分析清楚了,以后再遇到这样的问题或者类似问题才能轻车熟路,不然又要头疼或者成为问题的瓶颈了。

      1)讲到递归,我觉得先从函数说起,递归首先是一个函数,具有函数的一切功能,即写一个递归要有函数的形式。比如 void function()。

      2) 递归的定义,即递推和回归,即把一个大问题分成有限的小问题,并且通过这些小问题的解决,最后把大问题可以解决。

      3)递归函数的格式,重要的是有个出口,即一个递归结束的条件,比如 if(btree->data=='#'),最后有个return 。

     4)对递归的挖掘。递归实际是个栈的问题,而栈的特点是FILO,即先进后出。而每层栈保存了一个函数所具有的局部变量、函数返回地址,函数返回值等内容。这样当递归返回时,这层栈便被销毁,即这层栈的空间被释放,函数调用进入到上层中。

     5)当递归结束时,便返回了调用该递归的地方处。

     6)可以把递归看成一个算法,很多问题要用到递归,比如树。实际上算法的本质也是一个程序,这样当看到本质时,算法就没有那么吓人了。

     7)递归也有缺点,比如耗时间和空间,就像人类虽然很强大也有自身的缺点一样,完美的存在只在于追求的过程和一颗平静的心。

      

 

    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值