我们时常会遇到一些计算规则,它们在定义一个序列的元素时,要用到序列中在它前面的元素。这时就有两种不同的进行计算的办法。第一个办法是迭代,就是先算出第一个元素,再用递推公式算出下面的元素。第二个办法是递归,这个办法初看起来是循环的,因为在定义一个过程时,用到了过程本身。让我们用一些例子来说明递归与迭代的区别。 设我们想要计算 n!=1·2·3…(n-1)·n。显然,这里有一个递推关系:n!=n·(n-1)!,还有初始值1!=1。做完了第一步以后,就能相继地算出 2!,3!,4!等等,一直到算出 n!为止。另一个办法是:把计算阶乘作为一个程序,记作FACT,而用FACT(n)表示执行这个程序到n!的结果,于是FACT(n)=n×FACT(n-1),这就是一个递归程序。 第二个办法是:为了知道如何得到n!,只需知道如何得到(n-1)!,而为了知道如何得到(n-1)!,只需知道如何得到(n-2)!,以此类推。因为1!=1,所以能得到n!。这样,递归有点像是把迭代"倒过来"考虑。 从某些方面来说,用这个例子来说明这两种程序的差别是太简单了。此外,如果真要计算 n!,则迭代比递归更加简单和自然。现在我们再看一个例子,这里递归就比迭代简单得多了。 梵天塔 梵天塔是卢卡斯(法国数学家)发明的一种数学游戏,设有n个圆盘,大小不一,盘的中心是一个小洞,按大小把它们叠在一根小柱A上。大的放在下面。还有另外两根空柱子B和C。问题是如何把原来在柱子A上的一摞圆盘移到柱子B,但要服从以下规则:每次只许移动一个圆盘,每一次都只能移动一根柱子最上面的圆盘放到另一根柱子上,此外任何时刻都不许把圆盘压在较小的圆盘上。 如果只有3个圆盘,这个问题是很容易的,但是当圆盘数目增加时,难度就快速增加了。然而借助于递归,就能很快地找到按照要求移动圆盘的算法了。 事实上,假设我们已经知道移动n-1个圆盘的程序H(n-1),则下面就是移动n个圆盘的程序 H(n):先把小柱 A上的上面n-1个圆盘用程序H(n-1)移到小柱C上,再把A上的最后一个移到B上;最后再用H(n-1)把C上的n-1个圆盘全部按规则移到 B 上,而问题完全解决。我们可以把这个递归程序用符号写为 很容易用归纳法得出,整个程序包含2^n - 1步,此外,还能得知,这个任务不可能以更少的步数来完成。所以步数必为n的指数函数,而对于大的n。这个程序是很长的。 更进一步说,n越大,就需要更多的存贮单元来追踪我们的程序已经进行到哪一步了。与此相对照的是,如果我们想在迭代程序中实行一次迭代,我们只需要知道上一步迭代的结果就够了。所以,我们最需要记忆的只是一次迭代的结果。对于梵天塔,确实也有一个迭代程序。描述这个程序很容易,但是,这个程序确实能解决问题,却不是那么明显。它把这n个圆盘的位置编码成为一个n位的序列,而在每一步都给出得到下一个 n 位序列的很简单的规则。这个规则并不参照程序已经执行了多少步,所以,除了用来存贮圆盘位置外,所需记忆的量是很小的。 推广的欧几里得算法 欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。 欧几里得算法是很容易可以自然化为递归的另一个例子。如果a和b是两个正整数,则可以写出a=qb+r,0≤r
50岁女士做了面部提升,术后7天37天对比,像换了一个人!这也是我第一次做面部提升手术,现在快一个月了,看看我做的效果如何?之前做过一次线雕和两次热玛吉,但是皮肤松弛的厉害,效果并不明显,线雕维持了3个月,就又松垂了下来。也想过要去做拉皮杂志大片丨ELLEChinaApril2023刘雯,第十五次登上封面人物本篇时尚无根给大家带来的是ELLEChinaApril2023刘雯。2023年4月刊ELLE中国封面人物刘雯,这也是刘雯缺席一年时间之后第十五次的登上ELLE封面人物,身穿2023祝贺!石首市2023年度十佳旅游商品名单公布!3月18日,在2023石首桃花山旅游季启动仪式上,石首市2023年度十佳旅游商品名单发布。下面,小编带您一起来了解一下获评商品吧!01笔架鱼肚笔架鱼肚源选用淡水珍稀鱼种长吻鮠之鳔,指纹锁比钥匙锁更安全吗?听开锁师傅分析完,才知自己选错了现在我们生活在发达的时代,市场上出现了很多智能家居,其中智能指纹锁就很受欢迎,不少人都开始跟风添置。关于指纹锁和钥匙锁哪种更好用,这一直都分为了两面派,就连开锁师傅都沉默不语!不得耳廓形态畸形是否需要早期干预?专家提醒莫错过黄金期来源湖南日报湖南日报3月24日讯(全媒体记者周阳乐通讯员杨慕)近日,湖南省妇幼保健院儿童五官科诊室来了一对特别的父母,他们生下的两个宝宝都患有先天性耳廓形态畸形。耳廓形态畸形是否需花钱还伤人,不正规产后康复这坑该填上了新京报快评在当前鼓励生育的政策背景下,规范产后康复服务市场,是十分迫切的现实需要。助产士帮助刚生产完的产妇进行母乳喂养。图文无关。图新华社文罗志华产后康复竟然也有可能造成损伤?近日,据南方周早产女婴一岁时不会翻身,邻居一句话让家人放松警惕,终酿成悲剧楠楠一家生活在云南省的一个小山村里。2012年,楠楠妈妈怀孕,孕检期间一切正常。直到楠楠妈妈怀孕至七个月时,由于下地干农活导致早产。楠楠出生时只有一斤多,十分瘦小,到了一岁时仍不会剖腹产刚半年又怀孕,到底该不该要?这个月姨妈推迟了三天,刚开始还没当回事,随手测了一下试纸秒变大双红杠,当时感觉天都要塌了。告诉老公,老公看到验孕棒也瞬间蹲坐地上,这是我们俩都始料未及的。因为避孕措施的不当,意外来新生儿缺陷早防早治在高龄产妇占比超过14以后,如何生下一个健康的宝宝成为每个妈妈甚至每个家庭关注的焦点。北京市政协委员,首都儿科研究所外科主任医师教授马立霜在驻地接受了北京商报记者的专访。这些孩子需抽动症状表现有哪些?家长该如何判断孩子是否有抽动症?儿童抽动症是一种神经性疾病,其主要特征是频繁出现不自主的反复肌肉收缩或短暂的抽动动作,例如眼睛频繁眨动和面部抽搐等。这些症状虽然并不会影响患者的知觉和认知能力,但却会对患者的日常生听我一句劝,有娃的都安排上!听我一句劝,有娃的都安排上!尤其家里还是位尿霸宝宝,经常漏尿哭闹,不得已夜起换尿不湿,就怕透到床垫里。。洗不干净,看过来,爱诺康这个婴儿床笠保护你!视频加载中链接它就像是有松紧的床