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
print (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

 

posted @ 2018-06-18 22:45  xiaodingzi  阅读(158)  评论(0编辑  收藏  举报