はじめに
Pythonでフィボナッチ数列を出力する問題を解いてみた。
再帰関数を用いて解くパターンが多いらしいが、まだそこまで学習が追い付いてなくて理解が難しかったので、他の方法で実装してみた。
フィボナッチ数列とは
定義や概要などはWikipediaを参照。数学的に有名な数列の1つ。
プログラム的な活用法としては、主に初心者の練習問題として扱われる他、各言語の演算速度を測定するために用いられることもあるらしい。
問題
フィボナッチ数列をn番目まで表示してください。
実装の過程
まずは下準備として、最初の2数をあらかじめリストに代入しておく。
list_1 = [1, 1]
nをユーザー入力させるための下準備を行う。
n = int(input())
n番目までの数をfor文で出力。
for i in range(n):
最初の2数に関しては、既に準備したリストより出力すれば良いだけなので、
if (i == 0) or (i == 1):
print(list_1[i])
3番目以降の数は、リストの末尾の2数を合計すれば求められる。
計算結果を変数sum
に代入。
else:
num = list_1[-1] + list_1[-2]
ループ前にsum
をリストに追加するのを忘れない。
list_1.append(num)
print(num)
出力結果
ここでは例としてn = 15
の場合を記す。
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
まとめ
最後に上記のコードをまとめたものを掲載しておく。
list_1 = [1, 1] # リストの準備
n = int(input()) # ユーザー入力の受付
for i in range(n):
# 最初の2数の出力
if (i == 0) or (i == 1):
print(list_1[i])
# 3番目以降の数の演算・出力
else:
num = list_1[-1] + list_1[-2] # リスト末尾の2数を合計すれば求められる
list_1.append(num) # 計算結果をリスト末尾に追加する
print(num)