java里递归和迭代分别是什么算法啊
迭代是普通的循环。
例:求从1加到10
int sum=0
for(int i=0;i<= 10;i++){
sum=sum+i;
}
递归是指一个函数直接或间接调用自己。
好比:从前有个庙庙里有个大和尚和小和尚,大和尚叫小和尚讲故事,小和尚说从前有个庙庙里有个大和尚和小和尚,小和尚叫大和尚讲故事,大和尚说从前....
递归的特点:
必有三个条件:
1. 间接或直接调用自己。
2. 一定要有退出的条件(比方说大和尚口干了不听故事了)。
否则就是死循环
3。
要有逻辑体(想要做的事);
public int sum(int x){
if(x<=0){
return x;
}
return x+sum(x-1);
}
int s=10;
int total=sum(s);
该例中,sum函数总是调用自己,return x+sum(x-1);
sum有退出条件, x<=0
最后的结果是把 10+9+8+7+... 1 返回
在很多种情况下,迭代和递归都可以完成相同的功能, 不过递归有些功能迭代就完成不了。
并且代码没有递归简洁,熟练使用递归后能提高代码质量。
递推,递归,迭代分别是啥意思,希望能分别
递推是按照一定的规律来计算序列中的每个项,通常是通过计算前面的一些项来得出序列中的指定项的值。
其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复。
例:十本不同的书放在书架上。
现重新摆放,使每本书都不在原来放的位置。
有几种摆法?
当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.
第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;
第二步,放编号为k的元素,这时有两种情况.1,把它放到位置n,那么,对于剩下的n-2个元素,就有M(n-2)种方法;2,不把它放到位置n,这时,对于这n-1个元素,有M(n-1)种方法;
综上得到
M(n)=(n-1)[M(n-2)+M(n-1)]
递推算法以初始(起点)值为基础,用相同的运算规律,逐次重复运算,直至运算结束。
这种从“起点”重复相同的方法直至到达一定“边界”,犹如单向运动,用循环可以实现。
递推的本质是按规律逐次推出(计算)先一步的结果。
递归,就是在运行的过程中调用自己。
构成递归需具备的条件:
1. 子问题须与原始问题为同样的事,且更为简单;
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
例: 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编一程序计算共有多少种不同的走法.
设n阶台阶的走法数为f(n),显然有:
1 n=1
2 n=2
f(n-1)+f(n-2) n>2
算法为:当n>2时函数f(n)返回f(n-1)+f(n-2);
当n=2时函数f(n)返回2
当n=1时函数f(n)返回1
迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。
每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。
例:一个饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一个月开始,每月新生一只兔子,新生的兔子也如此繁殖。
如果所有的兔子都不死去,问到第 12 个月时,该饲养场共有兔子多少只?
分析:这是一个典型的递推问题。
我们不妨假设第 1 个月时兔子的只数为 u 1 ,第 2 个月时兔子的只数为 u 2 ,第 3 个月时兔子的只数为 u 3 ,……根据题意,“这种兔子从出生的下一个月开始,每月新生一只兔子”,则有:
u 1 = 1 , u 2 = u 1 + u 1 × 1 = 2 , u 3 = u 2 + u 2 × 1 = 4 ,……
根据这个规律,可以归纳出下面的递推公式:
u n = (u n - 1) × 2 (n ≥ 2)* ①
对应 u n 和 u n - 1 ,定义两个迭代变量y 和 x ,可将上面的递推公式转换成如下迭代关系:
①y=x*2
②x=y
①②两步反复迭代,就可以求出第12个月时兔子的总数了。
算法中的“迭代”和“递归有什么区别
区别很大,两个根本不是一回事:
迭代,多数用于类似集合这样的,遍历!怎么打个比方才好理解呢....纠结了...
迭代你就理解成遍历,不过这个遍历特殊之处就是:
第一:它会限制一些操作,比如说修改元素之类的操作..
第二:迭代内部会有一个指针,假如你正向迭代,这个指针会每次前移一次,不会后退,意思也就是说不会像for循环那样,可以控制;反向迭代也是同理,指针会每次后退一下!
递归:你可以简单点理解成:
一个函数调用自己,但是递归的前提一定要有终止条件,否者会栈内存溢出,然后就是循环体了!递归和迭代的区别有哪些
递归是不断的压栈。
非常消耗内存。
是相当于一种解决事物的算法。
不断的执行相同的函数代码,类似的可以解决汉诺塔等问题。
而迭代你可以理解为取出容器里东西的方法。
无忧云怎么样?无忧云服务器好不好?无忧云值不值得购买?无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点...
今年1月的时候Hosteons开始提供1Gbps端口KVM架构VPS,目前商家在LET发布消息,到本月30日之前,用户下单洛杉矶/纽约/达拉斯三个地区机房KVM主机可以从1Gbps免费升级到10Gbps端口,最低年付仅21美元起。Hosteons是一家成立于2018年的国外VPS主机商,主要提供VPS、Hybrid Dedicated Servers及独立服务器租用等,提供IPv4+IPv6,支持...
RAKsmart 商家估摸着前段时间服务器囤货较多,这两个月的促销活动好像有点针对独立服务器。前面才整理到七月份的服务器活动在有一些配置上比上个月折扣力度是大很多,而且今天看到再来部分的服务器首月半价,一般这样的促销有可能是商家库存充裕。比如近期有一些服务商挖矿服务器销售不好,也都会采用这些策略,就好比电脑硬件最近也有下降。不管如何,我们选择服务器或者VPS主机要本着符合自己需求,如果业务不需要,...
递归迭代为你推荐
现有新的ios更新可用请从ios14be苹果xr可不可以更新ios14uctools我的UC上不去。好急呀,请帮帮我。aspweb服务器asp网站挂上服务器,详细步骤企业电子邮局求:什么是企业邮箱?(企业邮箱与普通个人邮箱的区别是什么?)重庆杨家坪猪肉摊主杀人重庆一市民发现买的新鲜猪肉晚上发蓝光.专家解释,猪肉中含磷较多且携带了一种能发光的细菌--磷光杆菌时申请支付宝账户支付宝账户怎么申请?腾讯公司电话腾讯公司总部电话多少申请400电话400电话如何申请办理?香港空间香港有哪些购物场所账号通谁知道帐号通怎么解 我的号被盗号的帮了
cn域名 VPS之家 域名停靠一青草视频 网易域名邮箱 sharktech bbr typecho 长沙服务器 网盘申请 美国在线代理服务器 免费申请网站 上海联通宽带测速 闪讯官网 跟踪路由命令 网站加速软件 国内域名 免费asp空间申请 阿里dns 云服务是什么意思 七牛云存储 更多