python--递归函数匿名函数嵌套函数高阶函数装饰器生成器迭代器
Posted doumingyi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python--递归函数匿名函数嵌套函数高阶函数装饰器生成器迭代器相关的知识,希望对你有一定的参考价值。
一、递归函数
在函数内部,可以调用其他函数。但是在一个函数在内部调用自身,这个函数被称为递归函数
def calc(n): print(n) if int(n/2) == 0: #结束符 return n return calc(int(n/2)) #调用函数自身 m = calc(10) print(‘----->‘,m) #输出结果 10 5 2 1 -----> 1 #最后返回的值
递归特性:
1. 必须有一个明确的结束条件
2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
堆栈详情:http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html
递归函数使用案例:
1+2+3+4+.....+100的例子,代码如下:
def add_to_100(n): if n == 0: return n return n + add_to_100(n - 1) n = add_to_100(100) print(n) # 输出结果 5050
二分查找,代码如下:
1 def binary_search(dataset, find_num): 2 print(dataset) 3 4 if len(dataset) > 1: 5 mid = int(len(dataset) / 2) 6 if dataset[mid] == find_num: # find it 7 print("找到数字", dataset[mid]) 8 elif dataset[mid] > find_num: # 找的数在mid左面 9 print("