递归和迭代有什么区别?
“递归”和“迭代”的区别如下:
1、递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合。
2、迭代:利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用B。
3、递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出。
递归和迭代都是循环的一种。
简单地说,递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。
递归循环中,遇到满足终止条件的情况时逐层返回来结束。迭代则使用计数器结束循环。当然很多情况都是多种循环混合采用,这要根据具体需求。
递归的例子,比如给定一个整数数组,采用折半查询返回指定值在数组中的索引,假设数组已排序,为方便描述,假设元素都为正数,数组长度为2的整数倍。
折半查询是查询的一种,比遍历所有元素要快很多。
1 int Find(int *ary,int index,int len,int value)
2 {
3 if(len==1)//最后一个元素
4 {
5 if (ary[index]==value)return index;//成功查询返回索引
6 return -1;//失败,返回-1
7 }
8 //如果长度大于1,进行折半递归查询
9 int half=len/2;
10 //检查被查值是否大于上半部分最后一个值,如果是则递归查询后半部分
11 if(value>ary[index+half-1])
12 return Find(ary,index+half,half,value);
13 //否则递归查询上半部分
14 return Find(ary,index,half,value);
15 }
迭代经典例子就是实数的累加,比如计算1-100所有实数的和。
1 int v=1;
2 for(i=2;i<=100;i++)
3 {
4 v=v+i;
5 }
递归和迭代有什么区别?相关推荐
- 算法 - 递归与迭代 区别与联系
目录 迭代 递归 基本概念 应用场景 尾递归 递归与迭代区别 递归与迭代的转换 参考 文章放置于:https://github.com/zgkaii/CS-Notes-Kz,欢迎批评指正! 迭代 迭代 ...
- 递归和迭代的区别——以DNS为例
递归和迭代的区别--以DNS为例 2021.7.22 可能或多或少都听说过:函数的递归调用,牛顿迭代法,在DNS(Domain Name System域名系统)中有递归查询和迭代查询两种······那 ...
- 迭代和递归的应用例子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 ...
- 研究青蛙跳台阶问题区别函数递归与迭代
文章目录 前言 一.什么是青蛙跳台阶问题 二.使用递归和迭代(非递归)的区别 1.递归实现 2.迭代(非递归) 前言 青蛙跳台阶问题是函数递归的经典问题,也是求斐波那契数的变式,通过研究非递归(迭代) ...
- 递归与迭代的区别分析
递归和迭代是很重要的编程思想,所以对于其原理还是很有必要清楚的. 迭代(iteration) 在 维基百科 上是这样介绍的: Iteration is the repetition of a proc ...
- python递归和循环的区别_Python递归与迭代
1.递归与迭代: 递归和迭代都是循环的一种.简单地说,递归是重复调用函数自身实现循环.迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结 ...
- java迭代和 递归的异同_Java中的递归和迭代之间有什么区别?
该递归和迭代都重复执行的指令集.递归是指函数中的语句重复调用自身时的情况.该迭代是当循环重复执行,直到控制条件为假.递归和迭代之间的主要区别在于,递归是一个过程,始终应用于函数,而迭代则应用于我们要重 ...
- python内置函数(2)-递归与迭代
这篇文章简单介绍了迭代和递归的概念.两者的区别 什么是迭代: 迭代是重复反馈过程的活动,其目的通常是为了接近并达到所需的目标或结果.每一次对过程的重复被称为一次"迭代",而每一次迭 ...
- 递归和迭代_迭代与递归
很多编程小白都会遇到'迭代'和'递归'的问题(包括我自己),大部分同学还是不知道迭代与递归的区别.下面我就尝试用最通俗易懂的模式讲解递归与迭代的区别. 1.迭代: 迭代其实很简单,我们在编程中经常用到 ...
最新文章
- CSS的四种引入方式
- 搭建Keras,TensorFlow运行环境
- Scrapy实战篇(一)之爬取链家网成交房源数据(上)
- 【Pytorch神经网络理论篇】 29 图卷积模型的缺陷+弥补方案
- C语言基础知识整理(选择结构)
- 【精】C语言之变量存储类型
- 内核并发控制---自旋锁(来自网易)
- slf4j打印未捕获异常信息_谁再悄咪咪的吃掉异常,我上去就是一 JIO
- gaussdb 安全维护【设置帐户权限】【02】
- ERP系统-库存子系统-销售/领料出库单
- MS2131 USB 3.0 高清音视频采集+ HDMI 环出+混音处理芯片
- 个人怎么申请微信公众号
- MATLAB imagesc中将nan、inf或者特定值设为白色(或透明色)
- windows10 安装
- settimeout一定要清除么?
- VMware虚拟机禁止防火墙启动
- java文档注释用什么开头,极其重要
- android 刷机后存储空间变小,手机存储容量与标称不符 剩余的空间跑哪了?
- Direct3D 11 总结 —— 3 初始化 direct3D,并改变窗口颜色
- 计算机网络学习笔记第一章(概述) 超详细整理