递归和迭代有什么区别?

递归和迭代有什么区别?“递归”和“迭代”的区别如下:1、递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合。2、迭代:利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用…

大家好,又见面了,我是你们的朋友全栈君。

“递归”和“迭代”的区别如下:

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 }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134895.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Android中fragment A里面点击button跳转到fragment B实现方法

    Android中fragment A里面点击button跳转到fragment B实现方法

  • vscode自动生成html模板_vscode html插件

    vscode自动生成html模板_vscode html插件初学vue,不熟练使用vscode。发现vscode不能新建文件夹,必须从外部建好之后,在文件–打开文件夹中打开。然后在资源管理器中就可以新建文件或者文件夹了。新建文件后缀写html格式,则就是html文件。然后输入英文的!+tab键即可,或者是输入html:5+tab键。…

  • Silverlight游戏设计(Game Design):(十四)练习用游戏素材资源的获取及相关工具使用心得…[通俗易懂]

    Silverlight游戏设计(Game Design):(十四)练习用游戏素材资源的获取及相关工具使用心得…[通俗易懂]通过前6节的Demo制作演示,大家应该已经相当熟悉这款Silverlight-2D游戏场景编辑器了;通过它我们可以构建出各种类型的游戏,这也让广大的Silverlight游戏爱好者们变得蠢蠢欲动,近一段时间里有很多朋友询问我游戏素材资源是如何获取的,那么本节我将向大家分享这方面的经验与心得,漂亮的游戏素材配合上不断的游戏编码练习,在成就感中提升自身的游戏设计能力,让我们一同努力吧!推荐一,免费…

  • sql语句练习题整理

    一、现有数据库casemanage中表结构如下图TABLENAME:afinfo Id name age birth sex memo 1 徐洪国 37 1979-03-23 男 高中 2 王芳芳 …

  • noip2013 day1

    noip2013 day11.转圈游戏(circle.cpp/c/pas)【问题描述】n个小伙伴(编号从0到n-1)围坐一圈玩游戏。按照顺时针方向给n个位置编号,从0到n-1。最初,第0号小伙伴在第0号位置,第1号小伙伴在第1号位置,……,依此类推。游戏规则如下:每一轮第0号位置上的小伙伴顺时针走到第m号位置,第1号位置小伙伴走到第m+1号位置,……,依此类推,…

    2022年10月29日
  • java递归和迭代_Java中的迭代与递归

    java递归和迭代_Java中的迭代与递归递归提到迭代,不得不提一个数学表达式:n!=n*(n-1)*(n-2)*…*1有很多方法来计算阶乘。有肯定数学基础的人都知道n!=n*(n-1)!因而,代码的实现可以直接写成:代码一intfactorial(intn){if(n==1){return1;}else{returnn*factorial(n-1);}}在执行以上代码的时候,其实机器是要执行一系列乘法的:…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号