题目描述
一个数列第一个和第二个元素为1,之后各项为fab(n)=fab(n-1)+fab(n-2),其中1<=n<=50。
输入:一个数值
输出:第n个元素结果,如有异常或输入错误,输出"Impossible"
代码实现
思路1
斐波那契公式,递归实现,时间复杂度O(2^n),时间复杂度较高递归时间复杂度计算
def fab(n):
if n == 1 or n == 2:
return 1
return fab(n - 1) + fab(n - 2)
if __name__ == "__main__":
t = int(input())
if t >= 1 and t <= 50:
print(fab(t))
else:
print('Impossible')
思路2
顺序和
时间复杂度O(n)
def fab(n):
if n==1 or n==2:
return 1
else:
a=b=1
c=0
for i in range(3,n+1):
c=a+b
a=b
b=c
return c
t = int(input())
if __name__ == "__main__":
if t >= 1 and t <= 50:
print(fab(t))
else:
print('Impossible')