【fortran】配列を利用してフィボナッチ数列を解く

プログラミング

今回はfortranの配列を利用してフィボナッチ数列を解いていきます。

pythonで言うところの「リスト」にあたるものです。

これを使うことで、わかりやすいコードが書けるのでぜひ試してみましょう。

(ちょいちょいpythonの話を挟みますが、わからない方は飛ばしてもらって結構です。)

スポンサーリンク

配列

使い方

整数・実数を定義するのと同様で、配列も最初に宣言をしておかなくてはいけません。

 integer :: a(3) 

というような形です。

上のような場合は「成分が整数のaという配列を長さ3で」宣言しました。

pythonで表すと

a = [1,2,3]

というようなリストを表しています。

フィボナッチ数列

では例題として、フィボナッチ数列の20項目を求めてみましょう。

フィボナッチ数 - Wikipedia

最初にコードを示しておくとこのようになります。

 
program fibv
implicit none
integer :: vec(22),i
vec(1) = 0
vec(2) = 1
do i = 1,20
	vec(i+2) = vec(i+1) + vec(i)
end do
write(*,*) vec(20)
stop
end program fibv
 

配列の準備

では解説していきたいと思います。

まず、

integer :: vec(22),i

でvecという名前の配列を長さ22で準備します。

(繰り返し処理させる際に、i=1,20と設定したので、フィボナッチ数列は22項目まで求ままるからです。)

初期値の設定

次に配列vecの一番目の数字と、二番目の数字を設定しておきます。

vec(1) = 0
vec(2) = 1

これで、配列の一番目に0二番目に1が入りました。

繰り返し処理

では、繰り返し処理を行って配列を埋めていきましょう。

 do i = 1,20 vec(i+2) = vec(i+1) + vec(i) end do 

例えば、i = 1のとき、

 vec(3) = vec(2) + vec(1) 

となります。

vec(1)=0、vec(2)=1と初期値を設定したので、vec(3)=1はとなります。

すなわち、配列の3番目の数が1と決まりました。

pythonでのイメージとしては

 vec = [0,1,1] 

となります。

この要領で22項目まで決めていきます。(i = 20のときvec(22) = vec(21) + vec(20)まで決まるので)

20項目を呼び出す

最後に配列の20項目を呼び出します。

 write(*,*) vec(20) 

すると答えが

 4181 

と返ってくるので、これが正解になります!!

タイトルとURLをコピーしました