python3练习100题——006

继续做题~经过py3测试

原题链接:http://www.runoob.com/python/python-exercise-example6.html

题目:斐波那契数列。

我的代码:

def fib(n):
    if n==1:        
        l=[0]
    elif n==2:
        l=[0,1]
    else:
        l=[0,1]
        for i in range(2,n):
            l.append(l[i-1]+l[i-2])
    return l


思考:函数fib是以列表的形式返回的斐波那契数列,该列表第0/1位的无法迭代得出,所以用了if来解决这个问题。但是判断的次数很多,其实代码很繁琐。

看了题目下面的答案,可以用迭代的形式一次输出一个数字,代码也简洁了很多~

def Fib(n):
    a, b = 0, 1       #直接用变量给出了1,2个数,不需要if         
    print(a)              
    while n-1:
        a, b, n = b, a + b, n - 1          #用一行代码就实现了斐波那契数列的迭代,也实现了循环的计数
        print(a)