pythonでフィボナッチ数列を表示する関数を作成してみよう
フィボナッチ数列とは、前の2つの数字の合計で次の数字が得られる数列です。
例えば、フィボナッチ数列は次のように始まります。
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …
この数列をpythonで表示するための関数を作成しましょう。
for文を使って関数を作成しよう
Pythonでフィボナッチ数列を表示するには、次のような関数を作成することができます。
def fib(n):
a, b = 0, 1
for i in range(n):
print(a)
a, b = b, a + b
上記の関数は、フィボナッチ数列の最初の10項を表示するものです。引数 n
に数値を指定することで、フィボナッチ数列の先頭から数えて n
項目までを表示することができます。
例えば、 fib(5)
とすると、最初の5項目のフィボナッチ数列 0, 1, 1, 2, 3
を表示することができます。
この関数は、以下のように動作します。
- 関数の冒頭で、変数
a
とb
にそれぞれ0
と1
を代入します。これらの変数は、フィボナッチ数列の2つの前項を保持するために使用されます。 for
文を使用して、引数n
の回数だけ繰り返し処理を行います。- 各繰り返しでは、変数
a
の値を表示します。 - 次に、変数
a
とb
の値を更新します。新しいa
の値は、現在のb
の値となり、新しいb
の値は、現在のa
とb
の和となります。
このようにして、for文を使ってフィボナッチ数列を表示することができます。
再帰的な手法で関数を作成しよう
再帰的な手法を使用してフィボナッチ数列を表示するには、次のような関数を作成することができます。
# フィボナッチ数列を返す関数
def fib(n):
if n <= 1:
return n
else:
return fib(n - 1) + fib(n - 2)
# フィボナッチ数列の最初の10項を表示する
for i in range(10):
print(fib(i))
この関数は、フィボナッチ数列を返す再帰的な関数となっています。再帰的な関数とは、自分自身を呼び出す関数のことです。
この関数は、以下のように動作します。
- 関数の引数
n
に対して、if
文を使用して、条件分岐を行います。 - 引数
n
が0
または1
の場合は、そのままn
を返します。これは、フィボナッチ数列の1項目と2項目がそれぞれ0と1であるためです。 - 引数
n
が0
や1
以外の場合は、n-1
項目とn-2
項目の和を返すようにします。これは、フィボナッチ数列の2項目以降は、その前項の和となるためです。
このようにして、再帰的な手法を使ってフィボナッチ数列を表示することができます。
リストを使って関数を作成しよう
その他の方法としては、次のような方法もあります。
# フィボナッチ数列を表示する関数
def fib(n):
# フィボナッチ数列を格納するリストを用意する
fib_list = []
# 最初の2項目はそれぞれ0と1なので、そのまま格納する
fib_list.append(0)
fib_list.append(1)
# 2項目以降は、前項の和となるため、それぞれ計算して格納する
for i in range(2, n):
fib_list.append(fib_list[i - 1] + fib_list[i - 2])
# フィボナッチ数列を返す
return fib_list
# フィボナッチ数列の最初の10項を表示する
print(fib(10))
上記の関数は、フィボナッチ数列を格納するリストを用意し、そこにフィボナッチ数列の各項目を計算して格納するものです。
この関数は、以下のように動作します。
- 関数の冒頭で、フィボナッチ数列を格納する空のリストを用意します。
- 次に、最初の2項目である1項目と2項目をそれぞれ格納します。
- 次に、
for
文を使用して、2項目以降のフィボナッチ数列を計算して格納します。この際、i-1
項目とi-2
項目の和を計算し、その結果をi
項目として格納します。 - 最後に、フィボナッチ数列を表すリストを返します。
まとめ
今回は、三つの手法でフィボナッチ数列を表示する関数を作成しました。
一つ目の手法は、for文を使用したものです。
二つ目の手法は、再帰的な手法を使用したものです。
三つ目の手法は、リストを使用したものです。
いくつかの手法があるため状況にあったアルゴリズムを選ぶことが大事です。
今回紹介したアルゴリズム以外にも書き方はあると思うので、色々と考えてみることをおすすめします。
コメント