前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >递归和迭代的差别

递归和迭代的差别

作者头像
全栈程序员站长
发布2022-07-12 15:53:44
6450
发布2022-07-12 15:53:44
举报

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.

一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题类似的规模较小的问题来解决,能够极大的降低代码量.递归的能力在于用有限的语句来定义对象的无限集合.

使用递归要注意的有两点:

1)递归就是在过程或函数里面调用自身;

2)在使用递归时,必须有一个明白的递归结束条件,称为递归出口.

递归分为两个阶段:

1)递推:把复杂的问题的求解推到比原问题简单一些的问题的求解;

2)回归:当获得最简单的情况后,逐步返回,依次得到复杂的解.

利用递归能够解决非常多问题:如背包问题,汉诺塔问题,…等.

斐波那契数列为:0,1,1,2,3,5…

fib(0)=0;

fib(1)=1;

fib(n)=fib(n-1)+fib(n-2);

int fib(int n)<br />{<br /> if(0 == n)<br /> return 0;<br /> if(1 == n)<br /> return 1;<br /> if(n > 1)<br /> return fib(n-1)+fib(n-2);<br />}

上面就是一个简单的递归调用了.因为递归引起一系列的函数调用,而且有可能会有一系列的反复计算,递归算法的运行效率相对较低.

迭代:利用变量的原值推算出变量的一个新值.假设递归是自己调用自己的话,迭代就是A不停的调用B.

递归中一定有迭代,可是迭代中不一定有递归,大部分能够相互转换.能用迭代的不用递归,递归调用函数,浪费空间,而且递归太深easy造成堆栈的溢出.

//这是递归<br />int funcA(int n)<br />{<br /> if(n > 1)<br /> return n+funcA(n-1);<br /> else<br /> return 1;<br />}<br />//这是迭代<br />int funcB(int n)<br />{<br /> int i,s=0;<br /> for(i=1;i<n;i++)<br /> s+=i;<br /> return s;<br />}<br />

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档