モダンJavaScript入門: フィボナッチ数列を生成する方法・応用例

目次

  1. フィボナッチ数列とは
  2. フィボナッチ数列の生成方法
  3. コード例
  4. 応用例
  5. まとめ

1. フィボナッチ数列とは

フィボナッチ数列は、初めの2つの項が1で、その後の項が直前の2つの項の和になるような数列です。すなわち、数列は次のようになります:1, 1, 2, 3, 5, 8, 13, 21, ....

2. フィボナッチ数列の生成方法

JavaScriptフィボナッチ数列を生成するには、再帰関数またはループを使用する方法があります。ここでは、両方の方法を解説します。

3. コード例

再帰関数を使用する方法

function fibonacci(n) {
    if (n <= 2) return 1;
    return fibonacci(n - 1) + fibonacci(n - 2);
}

ループを使用する方法

function fibonacci(n) {
    let a = 1, b = 1;
    for (let i = 3; i <= n; i++) {
        let c = a + b;
        a = b;
        b = c;
    }
    return b;
}

4. 応用例

1. フィボナッチ数列を配列として生成

function fibonacciSeries(n) {
    let series = [1, 1];
    for(let i = 2; i < n; i++){
        series.push(series[i - 1] + series[i - 2]);
    }
    return series;
}

2. フィボナッチ数列を利用した絵画パターン生成

function drawFibonacciSpiral(n) {
    let a = 1, b = 1;
    let canvas = document.createElement('canvas');
    let ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.arc(a, b, a, 0, 2 * Math.PI);
    for (let i = 3; i <= n; i++) {
        let c = a + b;
 ctx.arc(b, c, c, 0, 2 * Math.PI);
        a = b;
        b = c;
    }
    ctx.stroke();
    return canvas;
}

3. フィボナッチ数列を利用したソートアルゴリズム

function fibonacciSort(array) {
    let fib = [1, 1];
    while (fib[fib.length - 1] < array.length) {
        fib.push(fib[fib.length - 1] + fib[fib.length - 2]);
    }

    for (let i = fib.length - 1; i >= 0; i--) {
        for (let j = fib[i] - 1; j < array.length; j++) {
            let temp = array[j];
            let k = j;

            while (k >= fib[i] && array[k - fib[i]] > temp) {
                array[k] = array[k - fib[i]];
                k -= fib[i];
            }

            array[k] = temp;
        }
    }
    return array;
}

5. まとめ

以上がJavaScriptフィボナッチ数列を生成する方法とその応用例です。フィボナッチ数列は単純な概念でありながら、その応用範囲は非常に広く、プログラミング能力を向上させるための試金石とも言えます。ぜひ、これを機にフィボナッチ数列の理解を深めてみてください。