5.2.1 递归函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)

2024-08-10
| 15页
| 175人阅读
| 29人下载
普通

内容正文:

任务5.2 特殊函数 打印斐波那契数列 同学们,这一节,我们来讲一下特殊函数,主要是递归函数,匿名函数,map函数以及filter函数 5.2 特殊函数——打印斐波那契数列 【任务描述】 递归是编程语言中较难学的知识点,但小T不畏困难,想要通过斐波那契数列学习递归。斐波那契数列(Fibonacci Sequence),又称黄金分割数列,由数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例引入,故又称“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34。 5.2 特殊函数——打印斐波那契数列 【任务分析】 在数学上,斐波那契数列以递归的方法定义:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n>=2,n∈N*),从定义可知,函数的每次调用都是对自己的调用。fib(n-1)+fib(n-2)就是调用了函数本身实现递归。递归的计算过程简述如下(假设n=3): (1)n=3,fib(3),判断为计算fib(3-1)+fib(3-2)。 (2)看fib(3-1),即fib(2),返回结果为1。 (3)看fib(3-2),即fib(1),返回结果也为1。 (4)计算第(1)步,结果为fib(n-1)+fib(n-2)=1+1=2,将结果返回。 5.2 特殊函数——打印斐波那契数列 递归函数 匿名函数 map()函数 filter()函数 reduce()函数 前面小节我们看到函数可以调用其他函数的函数实例。例如,函数A可以调用函数B,而函数 B 又可以调用函数 C。实际上,函数也可以调用它自己。调用自己的函数称为递归函数 5.2 特殊函数——打印斐波那契数列 5.2.1 递归函数 5.2.2 匿名函数 5.2.3 map()函数 5.2.4 filter()函数 5.2.5 reduce()函数 5.2.1 递归函数 同学们,这一节,我们来讲一下特殊函数,主要是递归函数,匿名函数,map函数以及filter函数 5.2.1 递归函数 函数也可以调用它自己,调用自己的函数称为递归函数。 n!=1*2*3*4*......*n 我们来看个例子,图中是求n阶乘的递归过程,以n=5为例,计算factorial(5),factorial=5*factorial(4),需要调用factorial(4),而factorial(4)=4*factorial(3),又需要调用factorial(3),直到factorial(1)=1,返回函数值,不再递归调用。有了factorial(1)=1,就可以得到factorial(2),factorial(3),factorial(4),最终得到factorial(5)的值为120。 由些我们可知,每个递归函数必须包括两个主要部分。 (1)终止条件。表示递归的结束条件,用于返回函数值,不再递归调用。在factorial()函数中,递归的结束条件为“n=1”。 (2)递归步骤。递归步骤把第n步的函数与第n-1步的函数关联。对于factorial()函数,其递归步骤为“n*factorial(n-1)”,即把求n的阶乘转化为求n-1的阶乘。 5.2.1 递归函数 def func(n): if n==1: result=1 else: result=func(n-1)*n n=int(input('输入一个正整数:')) print('%d!=%d'%(n,func(n))) 上面是求n阶乘的递归函数定义,在定义中,我们可知,递归终止条件为n等于1,递归步骤,为func(n-1)*n。从键盘输入一个正整数n,通过调用func(n)函数,得得n的阶乘,最后通过格式化输出。 5.2.2 匿名函数 同学们,这一节,我们来讲一下特殊函数,主要是递归函数,匿名函数,map函数以及filter函数 5.2.2 匿名函数 lambda [arg1 [,arg2,.....argn]]:expression 匿名函数,即函数没有具体的名称。Python允许使用lambda语句创建匿名函数,从而省去定义函数的过程。它的语法格式为: (1)[arg1 [,arg2,.....argn]]:参数 (2)expression:返回值 lambda语句中冒号前是函数参数,如有多个函数参数须使用逗号分隔,冒号后是返回值。 lambda接受的参数数量不是固定的,可运用多个参数。 匿名函数,也就是说函数没有具体的名称。Python允许使用lambda语句创建匿名函数,从而省去定义函数的过程。它的使用格式为:lambda [arg1 [,arg2,.....argn]]:expression 。lambda语句中冒号前是函数参数,如有多个函数参数须使用逗号分隔,冒号后是返回值。 lambda接受的参数数量不是固定的,可运用多个参数。 5.2.2 匿名函数 两数之和 【例5-17】匿名函数的定义及使用。 sum=lambda arg1,arg2:arg1+arg2 print("运行结果:",sum(10,20)) print("运行结果:",sum(20,20)) 30 40 我们来看一个例子,在这里使用lambda定义了一个匿名函数,参数为arg1和arg2,返回值为arg1和arg2的和。运行结果为30与40。同学们这里的sum不是函数的名称,而是一个变量,指向匿名函数的内存空间。可以通过变量名括号,参数来调用匿名函数,在一些场合不需要变量,直接写上匿名函数即可。 5.2.2 匿名函数 两数之和 【例5-17】匿名函数的定义及使用。 sum=lambda arg1,arg2:arg1+arg2 print("运行结果:",sum(10,20)) print("运行结果:",sum(20,20)) 30 40 我们来看一个例子,在这里使用lambda定义了一个匿名函数,参数为arg1和arg2,返回值为arg1和arg2的和。运行结果为30与40。同学们这里的sum不是函数的名称,而是一个变量,指向匿名函数的内存空间。可以通过变量名括号,参数来调用匿名函数,在一些场合不需要变量,直接写上匿名函数即可。 5.2.2 匿名函数 (1)无参匿名函数 t=lambda:True print(t()) (2)带参数匿名函数 lambda x: x**3 #一个参数 lambda x,y,z:x+y+z #多个参数 lambda x,y=3: x*y #允许参数存在默认值 我们来看一个例子,在这里使用lambda定义了一个匿名函数,参数为arg1和arg2,返回值为arg1和arg2的和。运行结果为30与40。同学们这里的sum不是函数的名称,而是一个变量,指向匿名函数的内存空间。可以通过变量名括号,参数来调用匿名函数,在一些场合不需要变量,直接写上匿名函数即可。 5.2.2 匿名函数 (a)lambda定义的是单行函数,如果需要复杂的函数,应使用def语句。 (b)lambda语句有且只有一个返回值。 (c)lambda语句可以包含多个参数。 (d)lambda语句中的表达式不能含有命令,且仅一条表达式。这是为了避免匿名函数的滥用,过于复杂的匿名函数不易于解读。 在使用匿名函数时,我们要注意以下几点: (a)lambda定义的是单行函数,如果需要复杂的函数,应使用def语句。 (b)lambda语句有且只有一个返回值。 (c)lambda语句可以包含多个参数。 (d)lambda语句中的表达式不能含有命令,且仅一条表达式。这是为了避免匿名函数的滥用,过于复杂的匿名函数不易于解读。 5.2.2 匿名函数 边学边练: 快速编写一个匿名函数实现如下功能:输入两个整数,输出它们的和。 $$

资源预览图

5.2.1 递归函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
1
5.2.1 递归函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
2
5.2.1 递归函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
3
5.2.1 递归函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
4
5.2.1 递归函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
5
5.2.1 递归函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。