フィボナッチ数列とpythonの多様な実現

1679 ワード

フィボナッチ数列
フィボナッチ数列は0と1から始まり,その後のフィボナッチ係数は前の2数を加算して得られる.特に、0は最初の項目ではなく、ゼロの項目です.
python実装
  • の最初のバージョンでは、初期値を入力し、特定の項目数のフィボナッチ数列
  • を印刷します.
        def fibonacci(a, b, num):
            if num == 0:
                return str(a) + " "
            if num == 1:
                return str(a) + " " + str(b) + " "
            if num % 2 == 1:
                return str(a) + " " + fibonacci(b, a+b, num-1)
            if num % 2 == 0:
                return str(a) + " " + str(b) + " " + fibonacci(b+a, a+b+b, num-2)
        
        if __name__ == '__main__':
            print fibonacci(0, 1, 9)
    

    出力結果:
    0 1 1 2 3 5 8 13 21 34 
    

    ここの読者はおかしいと思うかもしれませんが、パラメータは9ではありませんか.どうして10項目ありますか.前述したように、0は第1項ではなく、第0項である.
  • 第2のバージョンでは、特定の項目数のフィボナッチ数列
  • を印刷します.
        def fibonacci_v2(num):
            a, b = 0, 1
            if num == a:
                print a,
            elif num == b:
                print a, b,
            count = 0
            while num > count:
                print a, b,
                a, b = a+b, a+b+b
                count += 2
            if num % 2 == 0:
                print a
    
        if __name__ == '__main__':
            fibonacci_v1(10)    
    

    出力結果:
    0 1 1 2 3 5 8 13 21 34 55
    
  • 第3版、特定項目の値
  • を印刷
      def fibonacci_v3(num):
          if num == 0:
              return 0
          if num == 1:
              return 1
          return fibonacci_v2(num-1) + fibonacci_v2(num-2)
    
      if __name__ == '__main__':
          print fibonacci_v2(7)
    

    出力結果:
    13
    

    読んでくれてありがとう!文章に誤りや誤解がある場合は、ご指導をお願いします.科学技術は両刃の剣であり、世界を終結させ、世界をより美しくすることができる.The End.