フィボナッチ数列というのは、簡単に言うと「隣り合う二項の和が次項の値になる」数列のこと(0, 1, 1, 2, 3, 5, 8, 13, 21, 34...)。植物の葉の付き方や、花弁の配置、星雲の渦巻きなど、自然界の至るところにあるため本質的な美を内包するとされ、多くのデザインで取り入れられています。
有名なところではローマの詩人ウェルギリウスが叙事詩『アエネイス』の構成に用いたとか、モーツァルトのソナタやベートーベンの交響曲にも使われてたりとか、ル・コルビュジェの「モデュロール」の元になってたりするようですね。隣接する二項の比が、どんどん黄金比に近付いていくことでも有名です。
というわけで、そのフィボナッチ数列をサクッと取得できるJavaScriptを作りました。ついでにSugamo.cssとかいう謎なフロントエンド集会に持ち込んでみたり。
var fib = {
num: [0,1,1],
get: function(n){
n = Number(n);
if (n < 0) return false;
if (isNaN(n)) return false;
if (!fib.num[n]) {
for (var i=2; i<n+1; i++){
fib.num[i] = fib.num[i-1] + fib.num[i-2];
}
}
return fib.num[n];
},
list: function(n){
n = Number(n);
if (n < 0) return false;
if (isNaN(n)) return false;
var list = [];
if (!fib.num[n]) fib.get(n);
for (var i=0; i<n+1; i++) {
list.push(fib.num[i]);
}
return list;
}
}
fib.get()
で指定した項のフィボナッチ数を。fib.list()
で指定項までの数列を返します。以下にデモを用意してます。