迭代(科学概念)

迭代(科学概念)

在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让传范消迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况块部预:一种是所需的迭代次送布义厚持知落演娘获突数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。

例 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

相关文章

很多学生不喜欢王俊凯?原因和完成学习任务有关,好无辜
物流仓库管理费一般收多少
365彩票手机版下载

物流仓库管理费一般收多少

📅 09-01 🔍 899
PHP调用API接口的方法及实现过程
365彩票手机版下载

PHP调用API接口的方法及实现过程

📅 10-19 🔍 9482