递归和迭代
递归
程序调用自身的编程技巧称为递归,一个函数在其定义中直接或间接调用自身的一种方法,一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
PS:递归必须有终止条件
#coding=utf8
#1、2、3、5、8、13、21....定义一个函数,求第n个值是什么(斐波那契数)
#Fib(n) = (Fib(n-1) + Fib(n-2))
def f(n):
if n==1:
return 1
if n==2:
return 2
if n>2:
return f(n-1)+f(n-2)
print f(7)
迭代
利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用B。
让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。
1.在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。迭代是一个动词,它指的是一种操作,在Python中,就是 for 循环。
2.迭代与按下标访问数组最大的不同是,后者是一种具体的迭代实现方式,而前者只关心迭代结果,根本不关心迭代内部是如何实现的。
3.Python中,迭代永远是取出元素本身,而非元素的索引。
索引迭代
enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in enumerate(L):
print index, '-', name
zip()函数可以把两个 list 变成一个 list:
#打印出名字对应的排名(从1开始)
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in zip(range(1,len(L)+1),L):
print index, '-', name
#result如下
1 - Adam
2 - Lisa
3 - Bart
4 - Paul
浙公网安备 33010602011771号