递归和迭代的区别——以DNS为例 2021.7.22

可能或多或少都听说过:函数的递归调用牛顿迭代法,在DNS(Domain Name System域名系统)中有递归查询迭代查询两种······那么这二者有什么区别呢?
  • 递归的定义(来自百度百科):递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
  • 迭代的定义(来自百度百科):迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。

对于递归,我的理解是:一个复杂问题可以看成某一个过程的不断重复,这个子过程不断调用自身,最终当循环达到终止条件时,循环结束。

  1. 在二分法中,每次将数组分为两份,并与中间值mid比较大小确定待查询的值在mid的左边还是右边,如此反复,直到找到或者left和right交错。
  2. 在函数的递归调用中,同样体现了自己调用自己的思想。
  3. 在DNS的递归查询中(在不考虑DNS缓存的情况下),某服务器/主机总是逻辑上相邻的上一级服务器查询,直到查询到权威DNS服务器,随后沿相反方向返回其IP地址。
  4. 在树中大量用到了递归的思想,根本原因是树的本身定义就是一种递归的定义。

对于迭代,我的理解是:每一次循环都是为下一次循环提供了必不可少的信息,当达到循环结束条件时,迭代完成。

  1. 在使用计算机求解差分方程的解的时候,常常使用迭代法:某时刻的函数值取决于该函数过去时刻的值,通过往复循环可以求得该函数所有的离散函数值。
  2. 在DNS中的迭代查询中请求主机的每次查询都告知了下一次查询的地址,相当于是每次查询都为下一次查询提供了必不可少的信息,如此反复,最终查询到权威DNS服务器,并且权威DNS服务器直接返回IP地址给请求主机而无需经过中间的服务器。

递归和迭代的区别——以DNS为例相关推荐

  1. 递归与迭代的区别分析

    递归和迭代是很重要的编程思想,所以对于其原理还是很有必要清楚的. 迭代(iteration) 在 维基百科 上是这样介绍的: Iteration is the repetition of a proc ...

  2. java 递归和迭代的区别

    递归就是在过程或函数里面调用自身,而迭代是利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用B.显然递归用了栈空间,迭代因为始终在一个函数体中,所以使用的是堆空间.迭 ...

  3. java中递归与迭代的比较_深究递归和迭代的区别、优缺点及实例对比

    1.迭代是人,递归是神! 从"编程之美"的角度看,可以借用一句非常经典的话:"迭代是人,递归是神!"来从宏观上对二者进行把握. 从概念上讲,递归就是指程序调用自 ...

  4. C++递归和迭代的区别,并举例说明

    递归:函数自己重复调用自己 迭代:利用变量的原值推算出变量的一个新值:A不停的调用B 例子一:斐波那契数 递归(recursion): #include <iostream> #inclu ...

  5. 迭代和递归的应用例子c语言,递归和迭代的应用以及区别

    斐波那契数列: 1 1 2 3 5 8 13 21 34 55 - fb(n) : 1 n <= 2 fb(n-1) + fb(n-2) n > 2 int fb(n) { if(n &l ...

  6. 递归和迭代有什么区别?

    "递归"和"迭代"的区别如下: 1.递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把 ...

  7. 递归和迭代_迭代与递归

    很多编程小白都会遇到'迭代'和'递归'的问题(包括我自己),大部分同学还是不知道迭代与递归的区别.下面我就尝试用最通俗易懂的模式讲解递归与迭代的区别. 1.迭代: 迭代其实很简单,我们在编程中经常用到 ...

  8. 递归、迭代和分治(1):递归

    ​1.从现实中理解三个概念 可能很多人就已经接触了递归了,不过我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是! 可能也有一大部分人知道递归,也能看的懂递归,但在实际做题过程中,却不 ...

  9. DNS递归和迭代查询

    转自:https://www.jianshu.com/p/6b502d0f2ede 一.DNS解析分类 DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询,递归查询是默认方式, ...

最新文章

  1. [CES 2018] 联想公布全球首款Daydream一体机,第二季度或将发售
  2. python页面驱动mxd_如何利用python 批量导出mxd至jpg
  3. 后台设计中容易被忽略的坑
  4. 03 实现不同基本数据类型之间的类型转换 0214
  5. selenium和python的关系,Selenium+python
  6. sql数据库性能指标_SQL Server磁盘性能指标–第2部分–其他重要的磁盘性能指标
  7. 维护项目的管理策略案例
  8. Apache配置文件httpd.conf详解
  9. linux:进程管理与SELinux
  10. oracle一步一步01
  11. MODIS数据介绍及下载
  12. OfficePlus 微软官方大量 模板与图片素材 可供个人免费下载试用
  13. java并发-ReentrantReadWriteLock读写锁
  14. 无法打开U盘中的虚拟机
  15. poi导出excel无法打开文件
  16. http中的scheme和小程序中的scheme
  17. 对ROS局部运动规划器Teb的理解
  18. label标签的两次click触发
  19. Nginx主配置文件说明
  20. SQL注入Update注入

热门文章

  1. 【解析鼠标右键突然失灵原因及解决办法】
  2. 一场发生在“田间地头”的数字化变革
  3. Redis 事务使用详解
  4. coreplot 中怎样给固定点设置符号symbol(就是圆圈、五星、雪花那些),它里面是全部设置,我之需要Y值较大的设置,有没有好的方法,谢谢!
  5. Notepad++中格式化html代码的插件tidy2的下载与安装
  6. IN Tech 年度盘点|英特尔2021技术发展亮点
  7. protobuf批量管理自动生成方案
  8. 关于怎样突破1个微信投一票及人工刷票微信号推荐的相关介绍
  9. 怎样用命令行方式添加打印机端口? (已解决)
  10. excel文件点击第一次打开是灰色第二次才能真正打开 解决方法