请定义一个函数返回斐波那契数列的第n项,并输出斐波那契数列的前10项。

请定义一个函数返回斐波那契数列的第n项,并输出斐波那契数列的前10项。

#请定义一个函数返回斐波那契数列的第n项,并输出斐波那契数列的前10项。

def fib(n):
    if n==1 or n==2:
        return n
    else:
        return fib(n-1) + fib(n-2)

n = int(input('斐波那契数列的第n项:'))
print("斐波那契数列的第{}项:{}".format(n,fib(n)))

for i in range(1,11):
    print(fib(i))
    

给一个非递归算法 fib(n, t),t 参数默认输出第n项, t=True 输出前n项

def fib(n, t = False):
    # n:int, n>0
    if t: res = [1,1]
    if n<3: return [1]*n if t else (n+1)//2
    n1 = n2 = 1
    for i in range(2,n):
        n3 = n1 + n2
        n1,n2 = n2,n3
        if t: res.append(n3)
    if t: return res
    return n3

print(fib(10))
print(*fib(10,True))

分别输出:
55
1 1 2 3 5 8 13 21 34 55