2021.03.09
数学
フィボナッチ数列(配列)
フィボナッチ数列は、イタリアの数学者レオナルド・フィボナッチが考えた「ウサギ算」から導かれる数列です。
F0 = 0
F1 = 1
Fn+2 = Fn + Fn+1 (n≧0)
で定義されます。
Javaソースコード
Fibonacchi3.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050
public class Fibonacchi3 { // フィボナッチ数列を配列で戻す static int[] fibonacchi( int n ) { // n<1でnullを戻す if ( 1 > n ) return null; // 配列を作成する int[] fn = new int[ n ]; // フィボナッチ数列を配列に格納 switch ( n ) { case 1: // n=1 fn[ 0 ] = 1; break; case 2: // n=2 fn[ 0 ] = 1; fn[ 1 ] = 1; break; default: // n>2 fn[ 0 ] = 1; fn[ 1 ] = 1; for ( int i = 2; i < n; i++ ) { fn[ i ] = fn[ i - 2 ] + fn[ i - 1 ]; } break; } // 配列を戻す return fn; } // メイン public static void main(String[] args) { // フィボナッチ数列を格納する配列 int[] fn; // F10の計算 int n = 10; fn = fibonacchi( n ); // 結果を出力 for ( int i = 0; i < n; i++ ) System.out.println( fn[ i ] ); } }
実行結果
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis Fibonacchi3.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac Fibonacchi3.java
Fibonacchi3を実行
C:\talavax\javasample>java Fibonacchi3
n=0から10のフィボナッチ数を表示します。
出力結果
0 1 1 2 3 5 8 13 21 34 55
このソースでは、n=1~10のフィボナッチ数を出力しています。
Javaのソースコード解説
002 003
// フィボナッチ数列を配列で戻す static int[] fibonacchi( int n )
005 006 007
// n<1でnullを戻す if ( 1 > n ) return null;
nが1未満の場合はnullを戻しています。
008 009
// 配列を作成する int[] fn = new int[ n ];
011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030
// フィボナッチ数列を配列に格納 switch ( n ) { case 1: // n=1 fn[ 0 ] = 1; break; case 2: // n=2 fn[ 0 ] = 1; fn[ 1 ] = 1; break; default: // n>2 fn[ 0 ] = 1; fn[ 1 ] = 1; for ( int i = 2; i < n; i++ ) { fn[ i ] = fn[ i - 2 ] + fn[ i - 1 ]; } break; }
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を代入して、以下の処理を実行しています。
032 033
// 配列を戻す return fn;
以上です。