python-15

 递归特性:

 1. 必须有一个明确的结束条件

 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

 3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返     回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。)
 # 递增函数

 #递增函数的条件:
# 1.函数需要调用自身
# 2.必须有个条件停止调用 def mulit(n): if n == 1:
return 1 #首先考虑程序怎么停止
return n*mulit(n-1) #如果n不是1,就执行该语句 print(mulit(6)) # --------------------------------------------
# 斐波那契数列 def fibo(n): if n <= 1:
return n #注意, 这里是返回n return fibo(n-1)+fibo(n-2) print(fibo(10))

内置函数:

python-15

 str = ['','','a', 'b']
def fun2(s): return s + "alvin" # fun2("123")
ret = map(fun2, str)
print(ret) # <map object at 0x00000000023D8940>
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']
 #对sequence中的item依次执行function(item),将执行结果组成一个map object迭代器返回.
#map也支持多个sequence,这就要求function也支持相应数量的参数输入:
ef add(x,y):
    return x+y
print (list(map(add, range(10), range(10))))##[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
 #reduce(function, sequence, starting_value) 
#使用前需要导入以下模块 
from functools import reduce def add1(x,y):
return x + y print (reduce(add1, range(1, 101)))## 4950 (注:1+2+...+99) 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
上一篇:bzoj 2733 永无乡 - 并查集 - 线段树


下一篇:Java垃圾回收机制复习