zoukankan      html  css  js  c++  java
  • 关于递归的理解

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

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

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

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

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

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

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

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

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

          

        

  • 相关阅读:
    手机自动化测试:appium源码分析之bootstrap九
    手机自动化测试:appium源码分析之bootstrap八
    手机自动化测试:appium源码分析之bootstrap七
    HashMap
    Java 泛型
    LinkedList
    ArrayList
    Synchronzied(内置锁)
    第十四章 构建自定义的同步工具
    第十三章 ReentrantLock 简介
  • 原文地址:https://www.cnblogs.com/xshang/p/2864619.html
Copyright © 2011-2022 走看看