Python语言程序设计入门4.4 函数的嵌套调用与递归_第1页
Python语言程序设计入门4.4 函数的嵌套调用与递归_第2页
Python语言程序设计入门4.4 函数的嵌套调用与递归_第3页
Python语言程序设计入门4.4 函数的嵌套调用与递归_第4页
Python语言程序设计入门4.4 函数的嵌套调用与递归_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计入门Python语言……函数……第4章函数的嵌套调用与递归函数的嵌套调用12函数的递归调用函数的嵌套调用嵌套调用,是指在函数内又调用其他函数。main()……………a函数…………b函数……………①③④⑤⑥⑦②函数的嵌套调用例4-12:编写程序,输入m,n,求组合数:设计函数factorial(n),用于求n!;设计函数combination(m,n),用于求组合数;设计主函数main(),输入m、n的值,调用函数combination(m,n),求一个组合数。函数的嵌套调用例4-12:编写程序,输入m,n,求组合数:设计函数factorial(n),用于求n!;def

factorial(n):fn=1

foriin

range(1,n+1):fn*=i

returnfn函数的嵌套调用设计函数factorial(n),用于求n!;def

factorial(n):fn=1

foriin

range(1,n+1):fn*=i

returnfn设计函数combination(m,n),用于求组合数;def

combination(m,n):cmn=factorial(m)//(factorial(n)*factorial(m-n))

returncmn函数的嵌套调用def

factorial(n):fn=1

foriin

range(1,n+1):fn*=i

returnfndef

combination(m,n):cmn=factorial(m)//(factorial(n)*factorial(m-n))

returncmn设计主函数main(),求一个组合数。m=eval(input("m="))n=eval(input("n="))

print("m,n的组合数为",combination(m,n))main()#调用主函数执行程序defmain():

函数的嵌套调用例4-12:编写程序,输入m,n,求组合数:函数的嵌套调用例4-12:编写程序,输入m,n,求组合数:函数的递归调用当一个函数直接或间接的调用它自身时,称为函数的递归调用。

自己调用自己的函数,称为递归函数,递归函数一定要有递归条件和递归出口;

递归条件,也称递归体,就是函数调用自己,将大问题分解为类似的小问题;

递归出口,递归函数必须要有一个或几个明确的递归结束条件。函数的递归调用例4-13:编写程序,用递归计算n!将n!表达成递归函数的形式:

n!=n×(n-1)!,将求n!转为求(n-1)!,(n-1)!又转为求(n-2)!,……,直至0!=1,这个过程称为“递推”;当递推到“递归出口”时,就开始回归,通过0!求出1!,通过1!求出2!,……,最后通过(n-1)!求出n!,这个过程称为“回归”。函数的递归调用例4-13:编写程序,用递归计算n!def

factorial(n):

if

n==0:

return

1

#递归出口

else:

returnn*factorial(n-1)#递归条件n=eval(input("请输入一个正整数:"))print("{}!={}".format(n,factorial(n)))函数的递归调用例4-13:编写程序,用递归计算n!函数的递归调用例4-13:编写程序,用递归计算n!上述计算5!的递归过程为:函数的递归调用递归是计算机科学的一种重要算法,也是求解问题的一种重要思想;递归的优点是,定义简单,逻辑清晰,利用递归求解问题,可以得到一个清晰、简洁的解决方案,使代码看起来更加整洁、优雅,易于将复杂问题分解成更简单的子问题;递归的缺点是,递归的逻辑很难调试、跟进,递归算法求解问题的运行效率相对较低;任何用递归求解的问题,一般来说都能用循环来求解,通常,哪种能设计出更自然地反映问题本质的直观解决方案,就选用哪种方法。函数的递归调用递归是计算机科学的一种重要算法,也是求解问题的一种重要思想;递归的优点是,定义简单,逻辑清晰,利用递归求解问题,可以得到一个清晰、简洁的解决方案,使代码看起来更加

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论