2021/03/09 公開
・フィボナッチ数列(配列)
こkでは、配列を使ってフィボナッチ数列を求めるプログラムを紹介します。
フィボナッチ数列は、n番目のフィボナッチ数をFnで表すと、Fnは再帰的に
F1 = 1
Fn+2 = Fn + Fn+1 (n≧0)
で定義されます。
この式を配列使って計算するプログラムを作成しました。以下がそのソースコードです。
Fibonacchi3.java ← クリックしてダウンロードページに移動001: public class Fibonacchi3 { 002: // フィボナッチ数列を配列で戻す 003: static int[] fibonacchi( int n ) 004: { 005: // n<1でnullを戻す 006: if ( 1 > n ) 007: return null; 008: // 配列を作成する 009: int[] fn = new int[ n ]; 010: 011: // フィボナッチ数列を配列に格納 012: switch ( n ) { 013: case 1: 014: // n=1 015: fn[ 0 ] = 1; 016: break; 017: case 2: 018: // n=2 019: fn[ 0 ] = 1; 020: fn[ 1 ] = 1; 021: break; 022: default: 023: // n>2 024: fn[ 0 ] = 1; 025: fn[ 1 ] = 1; 026: for ( int i = 2; i < n; i++ ) { 027: fn[ i ] = fn[ i - 2 ] + fn[ i - 1 ]; 028: } 029: break; 030: } 031: 032: // 配列を戻す 033: return fn; 034: } 035: 036: 037: // メイン 038: public static void main(String[] args) { 039: // フィボナッチ数列を格納する配列 040: int[] fn; 041: 042: // F10の計算 043: int n = 10; 044: fn = fibonacchi( n ); 045: 046: // 結果を出力 047: for ( int i = 0; i < n; i++ ) 048: System.out.println( fn[ i ] ); 049: } 050: }
Fibonacchi3を実行
C:\talavax\javasample>java Fibonacchi3
n=5フィボナッチ数列を出力します。
Fibonacchi3.javaの出力結果
1 1 2 3 5 8 13 21 34 55
このソースでは、n=1~10のフィボナッチ数を出力しています。
ここからは、フィボナッチ数列を配列に格納するソースコードを上から順番に解説していきます。
002: // フィボナッチ数列を配列で戻す 003: static int[] fibonacchi( int n )
フィボナッチ数を計算するfibonacchiメソッドです。変数nに値を渡すとフィボナッチ数列を格納したint型の配列を戻します。
005: // n<1でnullを戻す 006: if ( 1 > n ) 007: return null;
nが1未満の場合はnullを戻しています。
008: // 配列を作成する 009: int[] fn = new int[ n ];
011: // フィボナッチ数列を配列に格納 012: switch ( n ) { 013: case 1: 014: // n=1 015: fn[ 0 ] = 1; 016: break; 017: case 2: 018: // n=2 019: fn[ 0 ] = 1; 020: fn[ 1 ] = 1; 021: break; 022: default: 023: // n>2 024: fn[ 0 ] = 1; 025: fn[ 1 ] = 1; 026: for ( int i = 2; i < n; i++ ) { 027: fn[ i ] = fn[ i - 2 ] + fn[ i - 1 ]; 028: } 029: break; 030: }
switch文でn=1、n=2、n>3(default)で処理を変えています。
n=1の場合、fn[0]に1を代入しています。これで数列の作成は終了です。
n=2の場合、fn[0]とfn[1]に1を代入しています。これで数列の作成は終了です。
n>2(default)の場合、fn[0]とfn[1]に1を代入して、以下の処理を実行しています。
for文で変数iを2からn-1まで1ずつ変化させるループを作成し、f[i]にf[i-2]+fn[i-1]を代入しています。これは、以下の式をコード化したものです。
Fn+2 = Fn + Fn+1 (n≧0)
032: // 配列を戻す 033: return fn;
以上です。
■関連コンテンツ
フィボナッチ数列 | フィボナッチ数列 |
フィボナッチ数列(再帰) | フィボナッチ数列 |
数学関数について | 数学関数について解説 |
黄金比 | 最も美しい比率 |
黄金角 | ヒマワリの種の配置? |
値のコンソール表示 | print()、println()とは? |
メソッド | メソッドについて解説 |
![]() |
ウサギ算ウサギ算について解説しています。1対のウサギが1ヶ月毎に1対のウサギを産んでいく場合に、数が月後にウサギの対の数がいくつになるかを計算するものです。 |
![]() |
計算結果の表示足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)の使い方を説明 |
![]() |
for文繰り返し処理に使用するfor文をJavaのソースコードを使って説明しています。 |
■新着情報
2022.07.06 | 完全数 | 6=1+2+3 |
■広告
