首页 > 编程知识 正文

迭代算法,递归和迭代哪个效率高

时间:2023-05-04 01:25:56 阅读:110434 作者:2169

递归和迭代的区别如下。

1、递归的基本概念:程序调用自身的编程技巧称为递归,是函数自身调用自身。 一种函数在其定义中直接或间接调用自身的方法,它通常通过将大而复杂的问题转换成与原问题相似的小问题来解决,可以大大减少代码量。 递归的能力在于用有限的语句定义对象的无限集合。

2、迭代:利用变量的原始值来估计变量的新值。 如果递归是自己呼叫自己的话,反复就是a不断地呼叫b。

3、递归一定有迭代,但迭代不一定有递归,大部分可以互相转换.可以迭代的不用递归,而是通过递归调用函数,浪费空间,且递归太深容易导致堆栈溢出.

递归和迭代都是循环的一种。

简单地说,递归就是反复调用函数本身来实现循环。 迭代是函数中某个代码实现循环,而迭代与普通循环的区别在于循环码中参与运算的变量是同时保存结果的变量,当前保存的结果是下一个循环计算的初始值。

在递归循环中,满足结束条件时,返回到每一层结束。 迭代使用计数器结束循环。 当然往往是多循环混合采用,但这是根据具体需求进行的。

递归示例。 例如,如果给定整数数组,则使用对折查询返回数组中给定值的索引。 假设数组已排序。 为了便于说明,假设元素都是正数,数组长度为2的整数倍。

对折查询是一种查询,比遍历所有元素快得多。

1intfind(int*Ary,int index,int len,int value ) )。

2 {

3if(len==1) /最后一个元素

4 {

5if(Ary[index]==value )返回索引; //查询成功并返回索引

6返回- 1; //失败后返回-1

7 }

8 //长度大于1时,进行半递归查询

9 int half=len/2;

10 //检查被测值是否大于上半部分的最后一个值,如果是,递归查询的后半部分

11if(valueAry[indexhalf-1] )。

12返回查找(ary,index half,half,value );

13 //否则递归查询的上半部分

14返回查找(ary,index,half,value );

15 }

迭代的典型例子是实数的累积,以计算例如1-100的所有实数之和。

1 int v=1;

2for(I=2; i=100; I )

3 {

4 v=v i;

5 }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。