递归”和“迭代”
递归”和“迭代”的区别如下:
1、递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合。
2、迭代:利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用B。
3、递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出。
imap的使用,其中对于iterator的理解可以借助这个例子:
-
import itertools
-
listone = ['a','b','c']
-
listtwo = ['11','22','abc']
-
listthree = [1,2,3] #叫做迭代器。
-
def funAddFive(x):
-
return x + 5
-
for item in itertools.imap(funAddFive,listthree):
-
print (item)
#迭代器 他的写法是个类 要初始化 __init__,要迭代 __iter__,有next方法__next__
class Fib:
def __init__(self):
self.prev=0
self.curr=1
def __iter__(self):
return self
def __next__(self):
value=self.curr
self.curr += self.prev
self.prev = value
return value
f=Fib()
list(islice(f,0,10))
#生成器 他的写法是个函数 返回的时yield(产量) curr的值
def fib():
prev,curr=0,1
while True:
yield curr
prev,curr = curr,curr+prev
f=fib()
list(islice(f,0,10))
yield 并不产生值,只是存取值
上一篇: 不重复数字(hash)
下一篇: JVM问题定位工具
推荐阅读
-
华为FreeBuds4i和airpods哪款好 华为FreeBuds4i和airpods区别对比
-
在这基础上加入分页和添加,该怎么解决
-
php通过array_merge()函数合并关联和非关联数组的方法_PHP教程
-
隐藏图片链接的蓝色边框和虚线 IEFirefoxCSS
-
COOKIE和SESSION关系和区别等,cookiesession区别
-
php取得几天星期几以及这个星期的星期一和下周一对应的日期
-
myEclipse8.5和php的环境配置,该如何解决
-
5G 模组|广和通 5G模组 FG150/FM150 规格书
-
学以致用——Java源码——使用多态输出平面及立体几何图形的面积和体积(Project: Shape Hierarchy)
-
网络接入技术和IPv6