らりょすの日記

備忘録と感じたことと。ブログじゃないです,日記です。

Pythonでフィボナッチ数列、トリボナッチ数列etc...

【20140814追記】少しプログラムを読みやすくしました。
【20140814更に追記】カウント用の変数iまで初期化してましたが,よく考えたらPythonだからいらねぇや・・・消しました。

Twitterにあげてたんですけど、メモ的に。

def fib(n):
   a, b = 0, 1
   for i in range(n):
     a, b = b, a+b
     print(a)

fib(10)

これはフィボナッチ数列を10番目まで表示しろってことですね
フィボナッチ数列に0が含まれるかどうなのかっていうことには触れませんが、出力しないようにしています。

再帰で書いてみたら?って先輩に言われたんで再帰バージョン

def fib2(n):
   if n <= 2:
     return 1
   else :
     return fib2(n-1)+fib2(n-2)

for i in range(1,10):
   print(fib2(i))

まぁ大して難しくないといえば難しくないんですけど
これも0が出力されないです。多分(

んで、トリボナッチ数列

def trib(n):
   a, b, c = 0, 1, 1
   for i in range(n):
     a, b, c = b, c, a+b+c
     print(a)  

trib(10)

これもそのまんま。
再帰で書きなおそうと思えば勝手に書き直せる

最後にダメ押し。
テトラナッチ数列

def tetr(n):
   a, b, c, d = 0, 1, 1, 2
   for i in range(n):
     a, b, c, d = b, c, d, a+b+c+d
     print(a)  

tetr(10)


そろそろGUIを作りたいお年ごろ。