递归和迭代有什么区别?

递归和迭代有什么区别?“递归”和“迭代”的区别如下: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 }

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python 股票历史数据(python获取股票历史数据)

    因为最近需要用到股市的各种指数数据,刚开始想的是从同花顺等交易软件直接导出,结果发现要用滚轮滚到最开始的日期,这过于繁琐了,我对于这种重复性的劳动一向不耐烦,而且这种方法在以后每日更新的时候也很不方便。所以我把视线转向了网上的各种api。网上比较普遍的主要有两种,一种是新浪的api,一种是雅虎的api。新浪的api很方便,速度也很快,不过就网上的资料而言,似乎只能提取当天的数据。雅虎的api功能更齐

    2022年4月17日
    256
  • seq2seq模型以及其tensorflow的简化代码实现

    seq2seq模型以及其tensorflow的简化代码实现

    2021年11月19日
    44
  • 返回值是函数_void函数怎么用

    返回值是函数_void函数怎么用通常,希望通过函数使主调函数得到一个确定的值,这就是函数的返回值。说明:1、函数的返回值是通过函数的return语句获得的。(1)return语句将被调函数中的一个确定值带回主调函数中去。(2)

    2022年8月2日
    6
  • 【Java基础知识 1】Java入门级概述

    【Java基础知识 1】Java入门级概述1991年成立了一个称为Green的项目小组,帕特里克、詹姆斯·高斯林、麦克·舍林丹和其他几个工程师一起组成的工作小组在加利福尼亚州门洛帕克市沙丘路的一个小工作室里面研究开发新技术,专攻计算机在家电产品上的嵌入式应用。由于C++所具有的优势,该项目组的研究人员首先考虑采用C++来编写程序。但对于硬件资源极其匮乏的单片式系统来说,C++程序过于复杂和庞大。为了解决困难,他们首先着眼于语言的开发,对于新语言的设计,Sun公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对C++进行了…

    2025年12月2日
    7
  • 学C++的经验总结

    下面的是学C++时要注意的。1.把C++当成一门新的语言学习(和C没啥关系!真的。);2.看《ThinkingInC++》,不要看《C++变成死相》;3.看《TheC++Programm

    2021年12月24日
    38
  • python之for循环详解_python循环5次

    python之for循环详解_python循环5次目录1、可以明确循环的次数2、iteratle_object(可迭代对象)3、enumerate()使用方法为4、补充:统计文件行数可以这样写:1、可以明确循环的次数遍历一个数据集内的成员 在列表解析中使用 生成器表达式中使用2、iteratle_object(可迭代对象)String(字符串) List(列表) Tuple(元组) Dictionary…

    2022年8月12日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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