zoukankan      html  css  js  c++  java
  • 递归算法

    什么是递归?

       不断调用自身,每次调用的时候都会改变一个关键变量,直至改关键变量达到设定的额定值时(边界),结束调用

    递归的核心思想

      将一个大规模的问题拆分成一个个小的问题,通过解决一个个小的问题逐步来解决大问题;说的通俗一点就是:大事化小,小事化了

    类似于数学中的阶层。

    递归的组成

    •   递归尽头:什么时候不在调用自身,即为边界;如果递归中没有归头,程序将陷入死循环
    •   递归主体:调用条件,什么时候需要调用自身

    问题计算 5 的阶层

          

    优缺点

    •    优点:代码简洁、清晰、并且容易验证准确性
    •   缺点:它的运行需要较多次数的函数调用,如果调用层数比较深,需要增加额外的堆栈处理,比如参数传递需要压栈等操作,会对执行效率有一定影响。代码看着舒服了,电脑负荷就大了

    递归与循环的区别与联系

    相同点

    • 都是通过控制一个变量的边界(或者多个),来改变多个变量为了得到所需要的值,而反复而执行的;
    • 都是按照预先设计好的推断实现某一个值求取;(请注意,在这里循环要更注重过程,而递归偏结果一点)

    不同点

      递归通常是逆向思维居多,“递”和“归”不一定容易发现(比较难以理解);而循环从开始条件到结束条件,包括中间循环变量,都需要表达出来(比较简洁明了)。

      简单的来说就是:用循环能实现的,递归一般可以实现,但是能用递归实现的,循环不一定能。因为有些题目①只注重循环的结束条件和循环过程,而往往这个结束条件不易表达(也就是说    用循环并不好写);②只注重循环的次数而不注重循环的开始条件和结束条件(这个循环更加无从下手了)。

  • 相关阅读:
    什么是结构化数据?什么是半结构化数据?
    安卓图表引擎AChartEngine(一)
    Android中通过pid获取app包名
    Android USER 版本与ENG 版本的差异--MTK官方解释
    Android 各层中日志打印功能的应用
    Android音频系统之AudioFlinger(二)
    Android音频系统之AudioFlinger(一)
    Android音频系统之音频框架
    第1章 音频系统
    Android音频系统之AudioPolicyService
  • 原文地址:https://www.cnblogs.com/2020YYXZ0507/p/13335804.html
Copyright © 2011-2022 走看看