递归和迭代有什么区别?
大家好,又见面了,我是你们的朋友全栈君。
“递归”和“迭代”的区别如下:
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://javaforall.cn/134895.html原文链接:https://javaforall.cn
相关文章
- java递归和迭代的区别
- 迭代与递归的区别「建议收藏」
- DNS递归和迭代过程详解
- MySQL递归查询 三种实现方式
- 数据结构:C语言实现二叉树及相关操作(递归,迭代)
- 归并排序(递归+非递归)
- C/C++ 目录递归与结束递归
- 【计算机网络】应用层 : DNS 域名解析系统 ( 域名 | 域名服务器 | 域名解析过程 | 递归查询 | 迭代查询 | 高速缓存 )
- sql server递归子节点、父节点sql查询表结构的实例
- PHP递归与迭代
- MySQL中函数递归:实现神奇的效果(mysql 函数递归函数)
- 深入浅出!探讨Oracle中的递归函数应用(递归oracle)
- 利用递归把多维数组转为一维数组的函数
- 关于递归运算的顺序测试代码
- 二叉树遍历非递归C++实现代码
- PHP不用递归实现无限分级的例子分享
- PHP冒泡算法详解(递归实现)