首页 > 编程知识 正文

迭代函数和递归函数,递归与迭代的区别与联系是什么

时间:2023-05-03 16:59:48 阅读:110428 作者:3947

最近在学习算法,发现自己笨得不知道迭代和递归,脑子转不过来,所以自己又学了。

如果你和我一样分不清迭代和递归,我衷心希望这篇文章对你有帮助。

本篇只是通过一个简单的例子来说明迭代和递归,对于二者在算法中更深层次的运用不加以说明。

如有错误,欢迎指正,我会及时更正错误。

迭代(iteration (theprocessofrepeating http://www.Sina.com /,eachtimeapplyingittotheresultofthepreviousstage

递归(recursion (theprocessofrepeating http://www.Sina.com /,eachtimeapplyingittotheresultofthepreviousstage

(摘自牛津词典的英语释义,但因为简单所以不翻译)

可以看出反复和递归都在反复。

a mathematical or computing process or set of instructions again and again

看看最亲近的例子吧。 —— a function

但是它们重复的内容,重复的方式不一样。

递归法: intf(intn ) if ) n==1||n==2) { return 1; }else{returnf(n-1 ) f ) n-2; //递归调用表达式}}递归分为两个过程:递归和回归,正如您从名称中看到的那样

例如,计算f(6)

3358www.Sina.com/表示配波拉契数列:1,1,2,3,5,8,…得到f(n)的过程,而分析表示黄色箭头的过程

由此可见,递推

蓝色箭头

回归

递归就是将一个规模为n的问题将其一级一级地向下分解,最终我们可以分解到 n0 或 n1 或 n== 2 时的初始值,得到初始值后,我们再一级一级地回归,得到最终结果。

函数必须直接或间接调用自身

因为有递归结束条件检查,所以每次进行递归调用时都会接近这个结束条件

如果不满足递归终止条件,则会调用带有递归调用的表达式。

所以递归解决的问题是这个样子的:

从上述求f(6)的过程中可以看出,有很多要解决一个规模为n的问题,能够设法将其分解成规模较小的问题,而这些小问题能够很方便地构造出大问题的解,并且这些小问题也能采用同样的分解和综合的方法,分解成为规模更小的问题。最后规模小到可以直接得解。,例如计算f(6)的过程进行了两次。 所以递归特点:

迭代法: intf(intn ) { int f1=1,f2=1; //确定迭代变量int t=0的if(n==1||n==2) { return 1; (else ) for ) intI=3; i=n; I ) (/控制迭代过程的t=f1 f2; f1=f2; f2=t; //构造迭代关系式(} return t; }同样,让我们计算一下f(6)

首先是问题:

此后,在每个周期内,按重复的运算

最后的t值是我们想要的结果

递归算法的执行效率相对较低。

根据我们建立的关系式,我们设定的迭代变量不断更新

通俗地说,迭代在不断前进,没有回头路

迭代变量f1,f2,t

迭代变量可以用迭代算法解决的问题中,建立的迭代关系式不断更新迭代变量

迭代关系式迭代特点:

控制迭代过程迭代的准备工作:

总结:递归是指在直接求解问题之前继续划分为规模较小的子问题,然后提升回归,综合小规模问题的解,最终得到原问题的解。

迭代通过建立的关系式,不断地从旧值中得到新值,总是在前进。

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