python-15
1 递归特性: 2 3 1. 必须有一个明确的结束条件 4 5 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 6 7 3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返 回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。)
1 # 递增函数 2 3 #递增函数的条件: 4 # 1.函数需要调用自身 5 # 2.必须有个条件停止调用 6 7 def mulit(n): 8 9 if n == 1: 10 return 1 #首先考虑程序怎么停止 11 return n*mulit(n-1) #如果n不是1,就执行该语句 12 13 print(mulit(6)) 14 15 # -------------------------------------------- 16 # 斐波那契数列 17 18 def fibo(n): 19 20 if n <= 1: 21 return n #注意, 这里是返回n 22 23 return fibo(n-1)+fibo(n-2) 24 25 print(fibo(10))
内置函数:
1 str = ['1','2','a', 'b'] 2 def fun2(s): 3 4 return s + "alvin" 5 6 # fun2("123") 7 ret = map(fun2, str) 8 print(ret) # <map object at 0x00000000023D8940> 9 print(list(ret))# ['1alvin', '2alvin', 'aalvin', 'balvin']
#map(function, sequence) str = [1, 2,'a', 'b'] def fun2(s): return s + "alvin" ret = map(fun2, str) print(ret) # map object的迭代器 print(list(ret))# ['aalvin', 'balvin', 'calvin', 'dalvin']
1 #对sequence中的item依次执行function(item),将执行结果组成一个map object迭代器返回. 2 #map也支持多个sequence,这就要求function也支持相应数量的参数输入:ef add(x,y):
return
x
+
y
(
list
(
map
(add,
range
(
10
),
range
(
10
))))
##[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
1 #reduce(function, sequence, starting_value) 2 #使用前需要导入以下模块 3 from functools import reduce 4 5 def add1(x,y): 6 return x + y 7 8 print (reduce(add1, range(1, 101)))## 4950 (注:1+2+...+99) 9 10 print (reduce(add1, range(1, 101), 20))## 4970 (注:1+2+...+99+20)
对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用.
# lambda #普通函数与匿名函数的对比: #普通函数 def add(a,b): return a + b print add(2,3) #匿名函数 add = lambda a,b : a + b print add(2,3) #========输出=========== 5 5