• <em id="ommgs"></em>
    <dd id="ommgs"><center id="ommgs"></center></dd>

    1. <em id="ommgs"><acronym id="ommgs"><u id="ommgs"></u></acronym></em>
      首 页IT知识库翔宇问吧收藏内容
      当前位置:翔宇亭IT乐园IT知识库Python

      Python使用while循环输出斐波那契数列(Fibonacci)

      减小字体 增大字体 作者:本站  来源:本站整理  发布时间:2020-07-05 08:30:47

      斐波那契数列又称费波那契数列(意大利语:Successione di Fibonacci),又译为费波拿契数、斐波那契数列、费氏数列、黄金分割数列。在西方,首先研究这个数列的是比萨的列奥那多(意大利人斐波那契Leonardo Fibonacci(1175-1250)),斐波那契在1202年著的《计算之书》中描述了该数列。(百度百科)

      一、斐波那契数列定义

      在数学上,以递归的形式来定义这个数列。

      F0 = 0
      F1 = 1
      Fn = Fn-1 + Fn-2  (n≥2)

      也就是说,该数列的第0项是0,第1项是1,从第2项开始,每项都是前两项的和。

      很多教科书中在描述该问题时都是从第1项开始的,也就是说:

      F1 = 1
      F2 = 1
      Fn = Fn-1 + Fn-2 (n≥3)
      

      二、该问题在Python中的实现

      下面给出再Python中的实现方法:

      1、列表版

      N = 40  #输出项数
      fn = [1,1]  #定义前两项
      i = 2  #从第3项开始计数

      # 循环赋值
      while i < N:
           fn.append(fn[ i - 1 ] + fn[ i - 2 ])  # 每项是前两项的和
           i += 1   #循环变量递增

      for e in fn# 迭代输出列表中的每一项
           print(e)

      输出结果(结果较长,这里省略了中间的项)

      1
      1
      2
      3
      5
      8
      13
      21
      ...
      24157817
      39088169
      63245986
      102334155
      2、变量版

      f1 = 1 # 第1项
      f2 = 1 # 第2项
      i = 2  # 从第3项开始循环
      N = 40 / 2  #因为每次输出两项,所以除以2

      # 每次输出两项,因为在循环开始时输出
      # 会造成最后两项不会输出,所以这里要+1

      while i <= N + 1:
          print(f1,",",f2)
          f1 = f1 + f2  # 第n项
          f2 = f1 + f2 # 第n + 1项
          i += 1 # 循环计数+1

      输出结果:

      1 , 1
      2 , 3
      5 , 8
      13 , 21
      34 , 55
      89 , 144
      233 , 377
      610 , 987
      1597 , 2584
      4181 , 6765
      10946 , 17711
      28657 , 46368
      75025 , 121393
      196418 , 317811
      514229 , 832040
      1346269 , 2178309
      3524578 , 5702887
      9227465 , 14930352
      24157817 , 39088169
      63245986 , 102334155
      3、简洁版

      f1,f2 = 0, 1
      N = 40
      i = 2

      while i <= N + 1:
          print (f2, end = ' ')
          f1,f2 = f2, f1 + f2

      这个算法会把所有的项输出到一行中,每个用空格隔开。

      输出结果:

      1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155

      4、控制每行输出的数量

      f1,f2 = 0,1
      N = 40
      i = 2
      j = 0
      num_per_row = 5
      while i <= N + 1:
          print(f2,end = ' ')
          j += 1
          if j % num_per_row == 0:
              print('\n',end = '')
          f1,f2 = f2, f1 + f2
          i += 1

      输出结果:

      1 1 2 3 5
      8 13 21 34 55
      89 144 233 377 610
      987 1597 2584 4181 6765
      10946 17711 28657 46368 75025
      121393 196418 317811 514229 832040
      1346269 2178309 3524578 5702887 9227465
      14930352 24157817 39088169 63245986 102334155

      5、使用函数输出第n项

      def Fibonacci(n):
          if n < 0:
              raise IndexError('参数不能小于0。')
          if n == 0:
              return 0
          elif n <= 2:
              return 1
          else:
              return Fibonacci(n - 1) + Fibonacci(n - 2)

      v = Fibonacci(30)
      print(v)

      输出结果:

      832040以上介绍了Python中计算Fibonacci数列的相关算法,如有不妥之处,请留言评论。

      Python中求Fibonacci数列


      如需转载,请注明出处和本文链接:翔宇亭IT乐园(http://www.dgmtwj.com/)

      本文链接地址:http://www.dgmtwj.com/article/python/2020/6470.html

      微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

      个人成长离不开各位的关注,你的关注就是我继续前行的动力。

      知识评论评论内容只代表网友观点,与本站立场无关!

         评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
      愿您的精彩评论引起共鸣,带来思考和价值。
      用户名: 查看更多评论
      分 值:100分 90分 80分 70分 60分 40分 20分
      内 容:
      验证码:
      关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
      本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
      Copyright © 2007-2021 biye5u.com. All Rights Reserved.
      japanese日本熟妇photo