JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで数値がフィボナッチ数かどうか判定する方法

本記事では、引数として受け取った数値がフィボナッチ数列に含まれているかどうかを判定し、その結果を真偽値(true / false)で返すJavaScript関数の作成方法を解説します。

フィボナッチ数列とは

フィボナッチ数列は「直前の2項の和が次の項になる」という規則に従う数列で、一般的に0と1から始まります。具体的には以下のような並びになります。

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

判定の考え方

判定方法はシンプルで、フィボナッチ数列の値を先頭から順番に生成しながら、対象の数値と一致するかを確認していきます。処理の流れは次のとおりです。

  • 数値が0または1の場合は、数列の最初の項に該当するため true を返す
  • 数列を生成していく過程で対象の数値と一致すれば true を返す
  • 生成した値が対象の数値を超えても一度も一致しなければ、その数はフィボナッチ数ではないため false を返す

サンプルコード

以下のコードでは、数値89がフィボナッチ数であるかどうかを判定しています。

const num = 89;
const isFib = query => {
    if(query === 0 || query === 1){
        return true;
    }
    let prev = 1;
    let count = 2;
    let temp = 0;
    while(count <= query){
        if(prev + count === query){
            return true;
        };
        temp = prev;
        prev = count;
        count += temp;
    };
    return false;
};
console.log(isFib(num));

実行結果

コンソールには以下のように出力されます。89は「55 + 34」で表されるフィボナッチ数であるため、true が返されます。

true
  1. JavaScriptで入力値が数字か文字かを判定する方法【isNaN()関数の使い方】

    入力された値が数字か文字(数値以外)かを判定するには、JavaScriptのisNaN()関数を使用します。この関数は、値がNaN(Not a Number:非数)である場合にtrueを返します。この特性を利用することで、ユーザーが入力した値が数値かどうかを簡単にチェックできます。 isNaN()関数とは isNaN()は「is Not a Number」の略称です。引数として渡された値が数値として解釈できない場合にtrueを、数値として解釈できる場合はfalseを返します。これにより、「入力内容が数字かどうか」をシンプルに判定できるのが特徴です。 サンプルコード 以下のコードでは、フォームの

  2. Pythonで数値がアキレス数かどうかを判定する方法

    ある整数 n が与えられたとき、その数がアキレス数(Achilles number)であるかどうかを判定しましょう。アキレス数とは、「べき乗数(powerful number)」であるにもかかわらず「完全累乗数」ではない数のことです。べき乗数とは、すべての素因数 p に対して p² もその数を割り切るような数 N を指します。一方、完全累乗数とは、mk(k ≥ 2)の形で表される数(例:平方数、立方数など)です。なお、アキレス数という名前はギリシャ神話の英雄アキレスにちなんだもので、「強力でありながら完全ではない」という「アキレスのかかと」の故事に由来しています。アキレス数の例としては、72、