Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

python基础4

$
0
0

内容概要:

一、递归

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

递归特性:

必须有一个明确的结束条件 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(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


Viewing all articles
Browse latest Browse all 9596

Trending Articles