1.递归
def fib(n):
if n <= 2:
return 1
else:
return fib(n-1) + fib(n-2)
2.带缓存结果的
def f(n):
x, y = 0, 1
while n:
x, y, n = y, x + y, n - 1
print(x,y,n)
return x
#逗号表达式,既不是从左向右,也不是从右向左。 同时计算
# (1, 1, 2) #x等于y(1), y等于x+y(0,1),n等于n-1(3-1)
# (1, 2, 1) #x等于y(1),y等于x+y(1, 1),n等于n-1(2-1)
# (2, 3, 0) #x等于y(2),y等于x+y(1, 2),n等于n-1(1-1), 循环退出
# 2
#由此看出,python的“,”表达式是并行的
if __name__ == '__main__':
# main()
assert fib(3) == f(3)
print f(3)