2014-10-29
今天面试python实习,其中一道题是实现fibnacci。分别写出三种方法
方法1:if else模仿三目运算符
f=lambda x:1 if x<2 else f(x-1)+f(x-2)
方法2:and or 模仿三目运算符
f1=lambda x: x<2 and 1 or (f1(x-1) +f1(x-2))
方法3:使用genarator
def f2(x): a=1 b=1 n=1 while n<x: yield a n=n+1 a,b=a+b,a
测试:
for i in range(10): print f(i), f1(i)
for n in f2(10): print n
结果: 1 1 1 1 2 2 3 3 5 5 8 8 13 13 21 21 34 34 55 55 1 2 3 5 8 13 21 34 55