python基础4,,内容概要:一、递归递


内容概要:

一、递归

递归就是函数本身调用自己,直到满足指定条件之后一层层退出函数

递归特性:

必须有一个明确的结束条件每次进入更深一层递归时,问题规模相比上次递归都应有所减少递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

示列1:求10!的值。

 1 #方法一递归实现 2 #/usr/bin/env python 3 # -*- coding:utf-8 -*- 4 #Author:W-D 5 def sumn(n): 6     if n<=2:#递归结束条件 7         return n 8     else: 9         return (n * sumn(n-1))#调用函数本身10 print(sumn(10))11 结果:12 362880013 14 方法二:for循环实现15 a=116 for i in range(1,11):17     a=a*i18 print(a)19 结果:20 3628800

示列二:使用递归的方式来生成斐波那契数列(斐波那契数列就是前面给两个数相加得到后面一个数,依次往后)

技术分享
 1 #/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #Author:W-D 4 def feola(n1,n2): 5     n3=n1+n2 6     if n1>500:#结束条件为数大于500 7         return 8     print("{}".format(n1))#打印值 9     feola(n2,n3)#自身调用10 feola(0,1)11 结果:12 013 114 115 216 317 518 819 1320 2121 3422 5523 8924 14425 23326 377
View Code
二、匿名函数lambda

匿名函数,顾名思义就是不需要显示的定义函数名的函数,但是在语法上受限于一个表达式。

语法:

1 函数名=lambda 参数:代码

示列:

 1 #/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #Author:W-D 4 f=lambda x,y:x+y#匿名函数表达式 5 print(f(3,2))#调用 6 结果: 7 5 8  9 #换个姿势用普通方式定义10 def my_add(x,y):11     return x+y12 print(my_add(3,2))#调用13 结果:14 5

python基础4

评论关闭