《Python程序设计与案例教程》课件chap7函数与模块.ppt

《Python程序设计与案例教程》课件chap7函数与模块.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
def age(int n): if n==1: c=10 else: c=age(n-1) + 2 return c n=int(input(“input n:”)) print(“%d”%age(n)) age(5) =age(4)+2 age(4) =age(3)+2 age(3) =age(2)+2 age(2) =age(1)+2 age(1) =10 age(5) =18 age(4) =16 age(3) =14 age(2) =12 递归结束条件 设计递归算法的方法 前提: 原问题可以层层分解为类似的子问题,且子问题比原问题规模更小 规模最小的问题具有直接解 方法: 寻找分解方法:将原问题转化为子问题求解,例:n!=n*(n-1)! 设计递归出口:根据规模最小的子问题确定递归终止条件,例:求解n! ,当n=0时,n!=1; 前提: 原问题可以层层分解为类似的子问题,且子问题比原问题规模更小 规模最小的问题具有直接解 方法: 寻找分解方法:将原问题转化为子问题求解,例:n!=n*(n-1)! 设计递归出口:根据规模最小的子问题确定递归终止条件,例:求解n! ,当n=0时,n!=1; 设计递归算法的方法 * 例:汉诺塔问题。设有三座塔座(A、B、C),在一个塔座(设为A)上有64个盘片,盘片不等,按大盘在下,小盘在上的顺序依次叠放。现要将A塔上的盘片借助于B塔,移到C塔上并保持同样顺序叠排,移动盘片时必须遵守以下规则: (1)每次只能移动一个圆盘; (2)圆盘可以插在A、B、C任意一个塔座上; (3)任何时候都不能将一个较大的圆盘放到 较小的圆盘之上。 * 将A塔上的红、黄两盘移动到B上 蓝盘放到C上 将红、黄两盘从B移动到C盘上。(完成) A B C 问题分析: (1)n=1时,直接将其从A-C; (2)n1时,只要先将前n-1个借助C从A-B,那么可以 把第n个直接从A-C; (3)如何将剩下的n-1个圆盘遵守规则借助A从B-C, 问题性质同(2); 问题性质相同,因此适合采用递归过程! 若将n个盘片按规定从A塔移至C塔,移动步骤可分为三步: 把A塔上的n-1个盘片借助C移动到B塔 把第n个盘片从A塔移至C塔 把B塔上的n-1个盘片借助A塔移至C塔 算法用函数hanoi(n,x,y,z)以递归算法实现 * 盘片数 源塔 借用塔 目标塔 递归终止:当递归调用到盘片数为1时 算法描述: 1)递归调用hanoi(n-1,a,c,b) 2)将n号盘片从a塔移动到c塔 3)递归调用hanoi(n-1,b,a,c) count=0 def hanoi(n,x,y,z): global count if n==1: count+=1 move(count,x,z) else: hanoi(n-1,x,z,y); count+=1 move(count,x,z) hanoi(n-1,y,x,z); def move(n,x,y): print(step %d: Move disk form %c to %c%(count,x,y)) m=int(input(Input the number of disks:)) print(The steps to moving %d disks:%m) hanoi(m,A,B,C) 7.5 变量的作用域 当程序中有多个函数时,定义的每个变量只能在一定的范围内访问,称之为变量的作用域。 按作用域划分,将变量分为局部变量和全局变量。 1. 局部变量 在一个函数内或者语句块内定义的变量称为局部变量。局部变量的作用域仅限于定义它的函数体或语句块中。 def fun1(a): x=a+10 …… def fun2(a,b): x,y=a,b …… 2. 全局变量 在所有函数之外定义的变量称为全局变量,它可以在多个函数中被引用。 x = 30 def func(): global x print(x的值是, x) x = 20 print(全局变量x改为, x) func() print(x的值是, x) 7.6 模块 将一些常用的功能单独放置到一个文件中,方便其他文件

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档