首页 > 代码库 > python基础4

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 3628800
13 
14 方法二:for循环实现
15 a=1
16 for i in range(1,11):
17     a=a*i
18 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 0
13 1
14 1
15 2
16 3
17 5
18 8
19 13
20 21
21 34
22 55
23 89
24 144
25 233
26 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+y
12 print(my_add(3,2))#调用
13 结果:
14 5

 

python基础4