迭代算法解题的一般思路

2016-02-19 13:07 1 1 收藏

下面图老师小编要跟大家分享迭代算法解题的一般思路,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

【 tulaoshi.com - 编程语言 】

迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。 利用迭代算法解决问题,需要做好以下三个方面的工作: 一、确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。 二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的要害,通常可以使用递推或倒推的方法来完成。 三、对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。 例 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 让计算机对这个迭代关系重复执行 11 次,就可以算出第 12 个月时的兔子数。参考程序如下: cls x=1 for i=2 to 12 y=x*2 x=y next i print y end 例 2 : 阿米巴用简单分裂的方式繁殖,它每分裂一次要用 3 分钟。将若干个阿米巴放在一个盛满营养参液的容器内, 45 分钟后容器内布满了阿米巴。已知容器最多可以装阿米巴 2 20 个。试问,开始的时候往容器内放了多少个阿米巴?请编程序算出。 分析: 根据题意,阿米巴每 3 分钟分裂一次,那么从开始的时候将阿米巴放入容器里面,到 45 分钟后布满容器,需要分裂 45/3=15 次。而“容器最多可以装阿米巴 2 20 个”,即阿米巴分裂 15 次以后得到的个数是 2 20 。题目要求我们计算分裂之前的阿米巴数,不妨使用倒推的方法,从第 15 次分裂之后的 2 20 个,倒推出第 15 次分裂之前(即第 14 次分裂之后)的个数,再进一步倒推出第 13 次分裂之后、第 12 次分裂之后、……第 1 次分裂之前的个数。 设第 1 次分裂之前的个数为 x 0 、第 1 次分裂之后的个数为 x 1 、第 2 次分裂之后的个数为 x 2 、……第 15 次分裂之后的个数为 x 15 ,则有 x 14 =x 15 /2 、 x 13 =x 14 /2 、…… x n-1 =x n /2 (n ≥ 1) 因为第 15 次分裂之后的个数 x 15 是已知的,假如定义迭代变量为 x ,则可以将上面的倒推公式转换成如下的迭代公式: x=x/2 ( x 的初值为第 15 次分裂之后的个数 2 20 ) 让这个迭代公式重复执行 15 次,就可以倒推出第 1 次分裂之前的阿米巴个数。因为所需的迭代次数是个确定的值,我们可以使用一个固定次数的循环来实现对迭代过程的控制。参考程序如下: cls x=2^20 for i=1 to 15 x=x/2 next i print x end 例 3 : 验证谷角猜想。日本数学家谷角静夫在研究自然数时发现了一个希奇现象:对于任意一个自然数 n ,若 n 为偶数,则将其除以 2 ;若 n 为奇数,则将其乘以 3 ,然后再加 1 。如此经过有限次运算后,总可以得到自然数 1 。人们把谷角静夫的这一发现叫做“谷角猜想”。 要求:编写一个程序,由键盘输入一个自然数 n ,把 n 经过有限次运算后,最终变成自然数 1 的全过程打印出来。 分析: 定义迭代变量为 n ,按照谷角猜想的内容,可以得到两种情况下的迭代关系式:当 n 为偶数时, n=n/2 ;当 n 为奇数时, n=n*3+1 。用 QBASIC 语言把它描述出来就是: if n 为偶数 then n=n/2 else n=n*3+1 end if 这就是需要计算机重复执行的迭代过程。这个迭代过程需要重复执行多少次,才能使迭代变量 n 最终变成自然数 1 ,这是我们无法计算出来的。因此,还需进一步确定用来结束迭代过程的条件。仔细分析题目要求,不难看出,对任意给定的一个自然数 n ,只要经过有限次运算后,能够得到自然数 1 ,就已经完成了验证工作。因此,用来结束迭代过程的条件可以定义为: n=1 。参考程序如下: cls
   input "Please input n=";n do until n=1 if n mod 2=0 then rem 假如 n 为偶数,则调用迭代公式 n=n/2 n=n/2 print "—";n; else n=n*3+1 print "—";n; end if loop end

来源:https://www.tulaoshi.com/n/20160219/1602990.html

延伸阅读
标签: 生活常识
月经初潮一般几天 月经初潮一般几天 时间一:一般的月经时间是3-7天比较正常的,也可能因为是初潮,时间也可能不是很规律的。 时间二:月经初潮一般是一周左右结束,不过由于是刚刚来,月经可能还不规律,会在十天左右干净。这个也不用很担心的。 时间三:青春期月经一般是5-7天左右,这个是很正常,大家不用很担心的,毕竟是第一...
标签: 卧室 壁纸
1、儿童卧室壁纸 浅色小卡通的壁纸适合儿童或者是一些乖巧的女孩子的卧室,这些漂亮而又甜美的风格,可以带给人一种就像在炎热的夏天吃了冰激淋一样的感觉,而有时还会让你感到回到童年的感觉。 2、立体创意壁纸 有时房间太大了也不是件好事,总显得很空旷。如果你感觉你的卧室有些单调,那你不妨选择立体创意图案的壁纸...
标签: 生活常识
军训一般都有哪些内容 图老师生活常识配图   很多参加过军训的同学都觉得军训又累又苦,其实军训都包括哪些内容呢? 基本训练: (1)队列练习是军训重头戏,它包括:立正、稍息、停止间转法、行进、齐步走、正步、跑步、踏步、立定、蹲下、起立、整理着装、整齐报数、敬礼、礼毕、跨立、半夜拉练等等。在军训过程中,像...
标签: 生活常识
狂犬疫苗一般打几针,怎么打 狂犬疫苗一般打几针,怎么打 第一,人被疯犬猫或可疑的疯动物咬伤后,注射狂犬疫苗是十分重要的,注射时间越早越好,应该进行全程免疫。 第二,一般被狗咬伤(皮肤没有出血,只有轻微擦伤或抓伤,或破损皮肤被动物舔过)就要共注射5次的,应在当天就是0、3、7、4、30天各注射狂犬病疫苗支,儿童用量和成人...
标签: 蚝油 香油
面酱淋汁 1.红葱头去皮剁碎备用。 2.热锅,倒入适量沙拉油,以微火爆香红葱头碎,至红葱头碎呈金黄色。 3.加入蒜泥略炒香,再加入甜面酱、蕃茄酱、水、细砂糖拌匀,煮至细砂糖溶解、酱汁滚沸即可。 甜面酱 1、将炒锅烧热放入少许油,五成热的时候放入面粉,推匀,加酱油,再加少量的水(酱油比较咸就不用放盐了,如果您怕太淡,就少...

经验教程

617

收藏

13
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部