Python从零开始系列连载(17)——Python特色数据类型(函数)(下)
匿名函数
匿名函数,匿名指的是我们不知道这个函数的名字
当我们使用时候,用lambda来声明匿名函数
这种匿名函数是没有名字的,是临时使用的
格式:
函数对象名 = lambda 形式参数:表达式
我们演示一下看看:
这里用匿名函数代替了add()函数的功能
x,y是形式参数
x+y是函数体内容
匿名函数也可以有条件分支语句:
返回x和y中较大值
小建议:当函数较为复杂时,不建议匿名函数,不太好写而且结构难理解
函数的递归
递归指的是一种直接或者间接调用自身的算法
它的本质是将问题分解为同类型的子问题
还记得高中学数列时候有公式是这样的么:
当我们去求a(n)时候,先要去求a(n-1),然后为了求a(n-1),就先要求a(n-2),以此类推
直到先要求a(1)
然后我们求出a(1),就能返回求出a(2)直到求出a(n)
----------------------end---------------------------
这个函数可以这样写:
有个经典的Fibonacci数列问题
讲的是这样一个故事:
1201年,意大利数学家Fibonacci(斐波那契)发现了以他自己的名字命名的数列---Fibonacci数列。
他是在研究兔子的生长、繁殖的规律中发现这一数列的。
他对数列的研究是从一对刚刚出生的小兔子(雌雄一对)开始计算在n个月后将会有多少只兔子
他做了如下的假设:
1、新出生的小兔子在一个月的时间里发育为成年兔子;
2、每对成年兔子每月繁殖一对小兔子(雌雄一对);
3、兔子没有死亡发生。
接下来我们来看会产生一组什么样的数呢?
我们用Fn代表n个月后兔子的对数。
因为从一对新生的兔子开始,所以,F0=1,F1=1。
这一对兔子在第二个月末生出另一对小兔子,从而F2=1+1=2。
在第三个月末,第一对兔子将生下又一对小兔子,所以F3=2+1=3。
我们用如下的表格表示前10个月每个月初兔子的数量:
由此可知,从第一个月开始以后每个月的兔子总数是:
1,1,2,3,5,8,13,21,34,55,89,144,233…
这就是著名的Fibonacci(斐波那契)数列
这个数列具有这样的特点:前两项均为1,从第三项起,每一项都是其前两项的和
即F0=F1=1,当n>1时,Fn+2=Fn+1+Fn。
我们写成函数是这样的:
使用到了递归的方法!
今天作业是自己跟着操作一遍~
自己不敲代码永远学不会写代码
下课
人生苦短,我选Python
未完待续,连载中......
现在还坚持再看连载学习的你们真的很棒棒!
入门部分已经学完大部分啦!加油