python做斐波那契数列。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python做斐波那契数列。相关的知识,希望对你有一定的参考价值。

python ,编程

直接创建一个类然后调用下面的def函数即可
#斐波那契数列
'''
第一位是1
第二位是1
第三位是2
公式位F(n)=f(n-1)+f(n-2)

'''

def get_Fibonacci_sequence(n):
'''输入n,遍历到第n位的斐波那契数列'''
a,b=0,1
if n>=3:#即等于>2 相当于1,2位特殊处理
for i in range(n-1):#操作次数是n-1,去除一次第一位的操作
c=a+b
a,b,=b,c
print(b)#这里选择先改变再输出,可以减少1次的循环

def get_Fibonacci_Num(n):
'''输入n,遍历到第n位的斐波那契数列的第n位数'''
a, b = 0, 1
if n >= 3: # 即等于>2 相当于1,2位特殊处理
for i in range(n - 1): # 操作次数是n-1,去除一次第一位的操作
c = a + b
a, b, = b, c
# 这里选择先改变再输出,可以减少1次的循环

return b
def get_Fibonacci_Num_recursion(n):
'''输入n,遍历到第n位的斐波那契数列的第n位数,递归实现'''
if n==1 or n==2:#特别注意,这里要用逻辑或判断,不能直接用或判断,

return 1
else:

return get_Fibonacci_Num_recursion(n-1)+get_Fibonacci_Num_recursion(n-2)

get_Fibonacci_sequence(11)
print(get_Fibonacci_Num(11))
print(get_Fibonacci_Num_recursion(11))
参考技术A 如果只是获得这个数列,而不是第几位什么的,那简单,用数组就行,设定需要输出前n位(n>=2),代码如下:
def fib_list(n):
a_list = [1, 1]
while len(a_list) < n:
a_list.append(a_list[len(a_list) - 2] + a_list[len(a_list) - 1])
return a_list
如果需要打印前100位,就直接执行
print(fib_list(100))即可
参考技术B

def fab(max):

n,a,b = 0,0,1

while n<max:

yield b

a,b = b,a+b

n=n+1

for i in fab(你想要的数列长度n):

print(i) 

参考技术C python是当下十分火爆的编程语言,尤其在人工智能应用方面。如果有心从事编程方向的工作,最好到专业机构深入学习、多实践,更贴近市场,这样更有利于将来的发展。AAA教育集团从事高端计算机职业教育工作,是国内知名的教育品牌。自07年创建以来,依托先进的办学理念,AAA培养出了数万名专业型、实战型高端技术人才。AAA教育紧密结合软件企业人才需求,自主研发了专业的软件人才培养课程体系。目前已在北京、郑州、沈阳、武汉、上海、深圳等全国主要城市开设直营教学中心和就业基地。学员大多进入阿里巴巴、360、京东、新浪、搜狐、百度、联想、云智慧、神州数码等知名IT企业。

Python算法三种斐波那契数列算法

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=0,F(2)=1, F(n)=F(n - 1)+F(n - 2)(≥ 3,∈ N*

 

本文章要解决的问题是:

1、生成前n项斐波那契数列
2、求第n项斐波那契数列的值是多少
3、给定终止值,生成此前斐波那契数列
 

1、求第n项斐波那契数列的值是多少(普通版)

根据通项公式递归求值,此种方法虽代码简洁却效率太低

1 def Fibonacci(n):
2     if n == 1:  # 如果n=1,返回0
3         return 0
4     elif n == 2:  # 如果n=2,返回1
5         return 1
6     else:
7         return Fibonacci(n-1) + Fibonacci(n-2)  # 通项公式 F(N) = F(N-1) + F(N-2)

 

2、求第n项斐波那契数列的值是多少(快速版)

由于递归自顶向下的方式效率太低,我们采用自底向上的方式,先将数值正向放入列表中,最后从列表中取值。

 1 def Fibonaccii(n):
 2     seq = [0,1]  # 初始列表怕[0,1]
 3     if n == 1:  # 如果n=1,返回[0]
 4         return [0]
 5     elif n == 2:  # 如果n=2,返回[0,1]
 6         return [0,1]
 7     else:
 8         for i in range(n-2):  # 循环往列表中添加数列,初始已有两项故添加项数为n-2
 9             seq.append(seq[i]+seq[i+1])  # 添加的数列值等于前两项的和
10         return seq[-1]  # 取最后一项的值

 

3、给定终止值,生成此前斐波那契数列

随便给定一个数字,求不大于此数值的斐波那契数列

def Fibonacciii(n):
    seq = [0,1]  # 初始化列表
    i = 0  # 初始i
    if n == 0:  # 如果n=0,返回列表[0]
        return [0]
    else:
        if n <= 3:  # 如果0<n<3
            for i in range(n):  # 循环往初始列表中添加斐波那契数列
                seq.append(seq[i]+seq[i+1])
            return seq
        else:  # 如果n > 3
            while True:  # 理论上当n 不确定时,需要添加的项数也是不确定的,故死循环
                if seq[-1] <= n:  # 一直添加,如果添加的最后一项不大于给定值
                    seq.append(seq[i]+seq[i+1])
                    i += 1  # 每次循环i 递增
                    continue  # 继续循环,不执行以下代码
                break  # 当最后一项大于给定值时,跳出死循环
            return seq[0:-1]  # 最后返回去掉最后一个数值的斐波那契数列

 

4、求前n项斐波那契数列

 1 def Fibonaccii(n):
 2     seq = [0,1]  # 初始化列表
 3     if n == 1:  # n=1,返回[0] 
 4         return [0]
 5     elif n == 2:  # n=2,返回[0,1]
 6         return [0,1]
 7     else:
 8         for i in range(n-2): # n>2,循环添加数列到初始列表中
 9             seq.append(seq[i]+seq[i+1])
10         return seq 

 

以上是关于python做斐波那契数列。的主要内容,如果未能解决你的问题,请参考以下文章

什么是k阶斐波那契序列?用汉语解释

python递归求斐波那契数列前10项

斐波那契数列

python实现斐波那契数列

Python手动编程实现斐波那契数列

编写一递归函数求斐波那契数列的前40项