请定义一个函数返回斐波那契数列的第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