内容正文:
5.2.1迭代
1
情境导入
第一天往钱罐子里面投入1元,存钱罐总金额为1元
第二天往钱罐里面投入2元,存钱罐总金额为3元
第三天往存钱罐里面投入3元,存钱罐里面总金额为6元
那么第n天时存钱罐里面一共有多少钱?
n=int(input("存钱天数:"))
s=0
for i in range(1,n+1):
___________
print("存钱罐的钱数:",s)
我们利用循环不断执行累加求和,从原值s算出新值s,最终计算出存钱罐的钱数,这种将变量从原值递推出一个新值的算法,我们称之为迭代算法。
s=s+i
迭代算法
迭代是重复反馈的过程,其目的通常是为了接近并达到所需的目标或结果。每一次对过程的重复被称为一次迭代,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。
·迭代的概念
·迭代的特性
迭代算法是用计算机解决问题的一种基本方法,它利用计算机运算速度快、适合做重复性操作的特点,让计算机重复执行一组指令(或一定步骤),这组指令(或这些步骤)每执行一次,都会将变量从原值推出一个新值。
迭代算法
利用迭代算法解决问题,需要做好三个方面:
·迭代算法的设计方法
·确定迭代变量
在能够用迭代算法处理问题中,至少具有一个直接或间接地不断有旧值推出新值的变量,这个变量就是迭代变量。
·建立迭代关系式
所谓迭代关系式,指如何从变量的前一个值推出下一个值的公式(或关系)。
·控制迭代过程
迭代过程在经过若干次重复执行以后要能结束,因此,要设定迭代结束的条件。
迭代算法
n=int(input("存钱天数:"))
s=0
for i in range(1,n+1):
___________
print("存钱罐的钱数:",s)
s=s+i
迭代算法:
①确定迭代变量
②建立迭代关系式
③控制迭代过程
思考:试分析上述程序的迭代变量?迭代关系式?如何控制迭代过程?
①确定迭代变量
②建立迭代关系式
③控制迭代过程
迭代算法
任务一:兔子问题(斐波那契数列)
假定我们有一雄一雌一对刚出生的兔子,它们在长到一个月大小时开始怀孕(真实情况是六个月左右),在第二月结束时,雌兔子产下另一对兔子,过了一个月后它们也开始繁殖,如此这般持续下去。每只雌兔在开始繁殖后每月都产下一对兔子,假定没有兔子死亡,在n个月后总共有多少对兔子?
a1 = 1
a2 = 1
an=an-1+an-2(当n>2时)
时间 0 1月 2月 3月 4月 5月 6月 ……
幼兔 1
成兔 0
总数 1
请列出求解兔子总对数an的数学表达式:
时间 0 1月 2月 3月 4月 5月 6月 ……
幼兔 1 0 1 1 2 3 5
成兔 0 1 1 2 3 5 8
总数(an) 1 1 2 3 5 8 13
迭代算法
请编程实现:
a = [1,1]
n=int(input('请输入月份:'))
for i in range(2,n+1):
_________________
a.append(x)
print(a[n])
x=a[-1]+a[-2]
时间 0 1月 2月 3月 4月 5月 6月 ……
幼兔 1 0 1 1 2 3 5
成兔 0 1 1 2 3 5 8
总数 1 1 2 3 5 8 13
思考:试分析上述程序的迭代变量?迭代关系式?如何控制迭代过程?
数学关系式:
a1 = 1
a2 = 1
an=an-1+an-2(当n>2时)
迭代算法
任务二:欧几里得算法——辗转相除法
辗转相除法求两个数的最大公约数的步骤如下:
先用大的数除以小的数,得到第一个余数;
再用小的数除以第一个余数得到第二个余数;
再用第一个余数除以第二个余数,得到第三个余数;
这样逐次用前一个余数除以后一个余数,直到余数是0为止。
那么,最后一个除数就是所求的最大公约数。
例如求1515和600的最大公约数:
第一次:用1515除以600,商2余315;
第二次:用600除以315,商1余285;
第三次:用315除以285,商1余30;
第四次:用285除以30,商9余15;
第五次:用30除以15,商2余0。故1515和600的最大公约数是15.
迭代思想是如何体现的?
自然语言 流程图 程序设计语言
输入两个正整数m和n
以m除以n,相除得到余数为r
若r=0,则输出n,算法结束;否则执行步骤
令m=n,n=r,返回步骤继续执行 m=int(input(“请输入正整数m:”))
n=int(input(“请输入正整数n:”))
____________
while ____________:
r=m%n
___________