• 递归与迭代


    递归是一个树结构,从字面可以其理解为重复“递推”和“回归”的过程,当“递推”到达底部时就会开始“回归”,其过程相当于树的深度优先遍历

    迭代是一个环结构,从初始状态开始,每次迭代都遍历这个环,并更新状态,多次迭代直到到达结束状态。

    我们在此可以想象,我们从幼儿园到大学的学习知识过程类似于迭代,从一年级的卷子,做到高年级的卷子。高年级的卷子的基础知识是来自于稍低年级的学习。进入了更高年级,证明完成了前次的'迭代'状态累积。

    人生如环,不断迭代,这里我们循环调用‘做卷子’方法,不断迭代我们自身的年级。

    那么可以想象,做一下类比:地球的演化是递归呀还是迭代呢?

    迭代是否就像演化伦的观念,一步一步进化,变得更适应环境。但仍有一个玄学的理论,地球演化到如今,已经换了一波又一波的人了。 那么这样就是地球自己递归。地球是主体。我们只是一个方法,或甚至一个变量。 

    迭代是人,递归是神!”来从宏观上对二者进行把握。

    从概念上讲,递归就是指程序调用自身的编程思想,即一个函数调用本身;迭代是利用已知的变量值,根据递推公式不断演进得到变量新值的编程思想。

    2.递归

    递归就是函数自己调用自己。

    2.1构成递归需具备的条件:

    1. 子问题须与原始问题为同样的事,且更为简单;
    2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。

    2.2递归的基本原理

    第一:每一级的函数调用都有自己的变量

    第二:每一次函数调用都会有一次返回

    第三:递归函数中,位于递归调用前的语句各级被调用函数具有相同的执行顺序

    第四:递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反。

    第五:虽然每一级递归都有自己的变量,但是函数代码并不会得到复制。

    2.3递归优缺点

  • 相关阅读:
    Vue+SpringBoot打造房屋租售信息系统
    Oracle RAC集群---基础维护常用语句总结
    apache中的ab压测
    Spring使用的注解大全和解释
    WeCross应用搭建整理,遇到的一些问题,WeCross如何搭建?
    Java基于Redis实现的分布式锁---电商下单案例
    【OpenCV 例程200篇】211. 绘制垂直矩形
    在 Kubesphere 中开启新一代云原生数仓 Databend
    Linux磁盘挂载脚本
    ssm毕设项目学生兼职信息管理系统66n7e(java+VUE+Mybatis+Maven+Mysql+sprnig)
  • 原文地址:https://blog.csdn.net/sinat_37574187/article/details/126697699