python斐波那契数列第n项(python求斐波那契第n项)
python3 fibonacci数列的第n项记为fib(a,b,n)
以下是示例代码。
def?fib(a,b,n):
????if?n==1:
????????return?a
????if?n==2:
????????return?b
????return?fib(b,a+b,n-1)
maxitem=0
num=0
i=1
while?True:
????maxitem=fib(1,1,i)
????if?maxitem=5000:
????????print(num)
????????break
????num=maxitem
????i+=1
不明白可追问。
请编写Python程序完成以下要求:编写函数,求斐波那契数列第n项的值,F0=1,F1=1?
def Fibonacci(n):
f0=0
f1=1
s=[]
s.append(f0)
s.append(f1)
for i in range(1,n+1):
s.append(s[i-1]+s[i])
return s[n]
Python实现斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
n=39
????????见到题目很自然联想到用递归或是用数组将前面的结果全部存储起来(这个想法其实和递归没区别),写起来最简单。但实际写出来发现不现实,运行效率太低,提交答案的时候果然提示超出要求时间,程序太过复杂。查阅答案的时候才发现一个很巧妙的方法(主要还是自己太笨了脑筋不会拐弯=.=||),其实F(n)=F(n-1)+F(n-2),也就是说整个运算过程其实只用保存两个数值即可计算出所需结果,并不需要保存前面的全部结果。2个数值,就应该联想到通过模2来存取数值(写到这里愈发觉得自己是个猪头),这样大大提高了效率,降低了存储空间。
? ? ? ? 其次是在实现过程中要注意一个小问题,最开始本猪写的是 for i in range(2,n) ,后来发现答案全错了,原来是因为n=2时, range(2,2) 为0,并不会运算下面的值,所以需要多算一位。
# -*- coding:utf-8 -*-
class Solution:
? ? def __init__(self):
? ? ? ? self.temp_Array = [0,1]
? ? def Fibonacci(self, n):
? ? ? ? if type(n) != int or n = 0:
? ? ? ? ? ? return False
? ? ? ? elif n == 1:
? ? ? ? ? ? return 1
? ? ? ? else:
? ? ? ? ? ? for i in range(2,n+1):
? ? ? ? ? ? ? ? self.temp_Array[i%2] = self.temp_Array[0]+self.temp_Array[1]
? ? ? ? ? ? return self.temp_Array[n%2]