python 斐波那契数列之你不知道的神奇故事

简介: python 斐波那契数列之你不知道的神奇故事

斐波那契数列



三岁学编程:最白话的语言带领学习编程,都是小白,一起努力


戏说斐波那契(兔子数列)


斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。


一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?


解析兔子


第一个月小兔子没有繁殖能力,所以还是一对


两个月后,生下一对小兔对数共有两对

三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对

------


依次类推可以列出下表:


月份:    1    2    3    4    5     6     7     8      9    10    11     12
兔子数:  1     1    2    3    5     8    13    21     34    55    89    144


兔子的个数就是所谓的斐波那契数列


定义


一个数列从第3项开始,每一项都等于前两项之和时就称这个数列为斐波那契数列。


方法一:for循环(迭代)


递增计算,利用for循环逐个相加得到结果


def fibon_1(n):   #设置函数fibon_1函数
        a = 0
        b = 1
        for i in range(n+1):
            a , b = b, a+b
        return  a
fac = int(input("输入需要的位数:"))
for i in range(fac):
    print(fibon_1(i),end='  ')
结果:
输入需要的位数: 5
1  1  2  3  5  


方法二:递归


斐波那契数列为经典的递归公示:

这里可以采用递归的方法获取


def fibon_2(n):
    if n <= 1:
        return n
    elif n > 1:
        return  fibon_2(n-1)+fibon_2(n-2) #采用递归方式
fac = int(input("输入需要的位数:"))
for i in range(1,fac+1):
    print(fibon_2(i),end='  ')
结果
输入需要的位数:5
1  1  2  3  5  


方法三:生成器

采用生成器


def fb_3():
    a,b = 0,1
    while True:
        yield a
        a , b = b , a+b
g = int(input('需要获取斐波那契数列的多少位'))
for i in fb_3:
    print(i):
    n = n+1
    if n == g:
        break


也可以用一下方式获取1000一下的值


a=0
b=1
while b < 1000:
    print(b,end=',')#end 可以将print输出到同一行并以 ,号结尾
    a, b = b, a+b
结果
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,


该代码简单但不是很完整还需要一定的改正


C语言实现:


#include<stdio.h>
main(){
  int fibonacci[20],i,j;
  fibonacci[0]=0;
  fibonacci[1]=1;
  for(i=2;i<20;i++){
    fibonacci[i]=fibonacci[i-2]+fibonacci[i-1];
  }
  for(j=0;j<20;j++){
    printf("%-6d ",fibonacci[j]);
    if((j+1)%5==0){
    printf("\n");
    }
  }
}


20210504234642205.png


还有其他的方式可以进一步编写不过三岁水平有限还希望大家多多指导!


目录
相关文章
|
7月前
|
Python
Python实现递归的方式来生成斐波那契数列
Python实现递归的方式来生成斐波那契数列
|
2月前
|
Python
在Python中实现斐波那契数列(Fibonacci sequence)的4中方法
在Python中实现斐波那契数列(Fibonacci sequence)的4中方法
250 0
|
6月前
|
Python
【Python 训练营】N_5 斐波那契数列
【Python 训练营】N_5 斐波那契数列
36 2
|
算法 Python
python实现斐波那契数列的多种方式
python实现斐波那契数列的多种方式
|
7月前
|
Python
python实现斐波那契数列案例代码
python实现斐波那契数列递归实现斐波那契数列:
51 0
|
7月前
|
存储 Python
Python写斐波那契数列
Python写斐波那契数列
56 0
|
7月前
|
存储 Python
用 Python 实现斐波那契数列。
【2月更文挑战第9天】【2月更文挑战第25篇】用 Python 实现斐波那契数列。
68 0
|
Python
Python实现斐波那契数列
Python实现斐波那契数列
285 0
|
Python
Python列表实现斐波那契数列
Python列表实现斐波那契数列
155 0
Python-剑指offer(7,8,9)斐波那契数列,跳台阶,变态跳台阶
Python-剑指offer(7,8,9)斐波那契数列,跳台阶,变态跳台阶