# coding:utf-8
def fib(n):
    """公式法"""
    from math import sqrt, pow
    return int(1/sqrt(5)*(pow((1+sqrt(5))/2,n) - pow((1-sqrt(5))/2,n)))
def fib2(n):
    """累加,使用之前计算的数"""
    if n == 0:
        return 0
    elif n == 1:
        return 1
    firstnum = 0
    secondnum = 1
    fibnum = 0
    cnt = 1
    while cnt < n:
        fibnum = firstnum + secondnum
        firstnum ,secondnum = secondnum, fibnum
        cnt += 1
    return fibnum
def fib3(n):
    """列表计算追加,简洁"""
    begin = [1, 1]
    for count in xrange(1, n-2):
        begin.append(begin[-1]+begin[-2])
    return begin
def fib4(n):
    """递归计算"""
    if n <= 1:
        return n
    else:
        return fib4(n - 1) + fib4(n - 2)
# fib1 fib2 fib4
for i in range(1, 10):
    print fib4(i)
# fib3
print fib3(10)

results matching ""

    No results matching ""