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

    什么是递归?

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

    递归的核心思想

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

    类似于数学中的阶层。

    递归的组成

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

    问题计算 5 的阶层

          

    优缺点

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

    递归与循环的区别与联系

    相同点

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

    不同点

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

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

  • 相关阅读:
    树状数组 P3368【区间更新 单点查询】
    线段树 P3374 【单点修改 区间查询】
    线段树 P2574 【区间修改 区间查询】
    线段树 P4588 【线段树用法】
    eclipse连接mysql数据库实现怎删改查操作实例(附带源码)
    软件设计师考试 算法设计
    数据库设计
    面向对象设计
    数据流图设计
    个人总结与对老师的评价
  • 原文地址:https://www.cnblogs.com/2020YYXZ0507/p/13335804.html
Copyright © 2011-2022 走看看