次に、フィボナッチ(フィボナッチ数列)の兄貴分であるトリボナッチ数列を紹介したいと思います。
その名前が示すように、フィボナッチ数列手法に非常に似ていますが、違いがあります。
このシーケンスを [1,1,1] で開始すると、次の結果が得られます:
[1,1,1,3,5,9,17,31,...]
ご覧のとおり、 4 番目の項 3 は、1 番目、2 番目、および 3 番目の項の合計であり、5 番目の項 5 は、2 番目、3 番目、および 4 番目の項の合計であり、以下同様です...
次に、[0,0,1] を使用するとします。このシーケンスを開始するとどうなるでしょうか?
[0,0,1,1,2,4,7,13,24,...]
この例を読んだ後、あなたはおそらくルールを推測したでしょう: 最初のシーケンスとして使用される最初の 3 つの数字を除いて、以下 の各数値は、その前にある最も近い 3 つの数値の合計に等しくなります。
フィボナッチ数列を比較すると、ルールは次のとおりです。最初の数列として使用される最初の 2 つの数値を除き、後続のすべての数値は、その前の 2 つの最も近い数値の合計に等しくなります。
さて、私がなぜ彼らが兄弟だと言ったか理解できましたか?
このルールによれば、Xbonacci 数列にも拡張できますが、このトピックでは Tribonacci 数列についてのみ説明します。
それでは、トリボナッチ数列を構築するメソッドを実装する方法を考えてみましょう!
2 つのパラメーターを受け取ります。最初のパラメーターは初期化シーケンスであり、配列です。 2 番目のパラメーターは、生成するシーケンスの項目の数を示す数値です。
戻り値は当然、新しい項目が生成された後のシーケンス配列です。
この問題では、2 つの状況を区別する必要があります:
1 つ目は、この初期化シーケンスのサイズが 3 であるが、生成する必要がある項目が 2 つだけの場合はどうすればよいでしょうか?答えは簡単です。初期化配列から最初の 2 つの項目をインターセプトするだけで問題ありません。
2 番目のケースでは、初期化シーケンス以外の項目を生成する必要があります。これも非常に単純です。フィボナッチ数列やサイクルを生成するようなもので、新しい項目は前の 3 つの項目の加算などで構成されます。 。
function tribonacci(signature,n){ var startPoint = 0; if(n < signature.length){ return signature.slice(0,n); } for(var i=startPoint+signature.length;i<n;i++){ signature[i] = signature[startPoint] + signature[startPoint+1] + signature[startPoint+2]; startPoint++; } return signature; }
上記は JavaScript の興味深い質問の内容です: Tribonacci シーケンス その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。