Home  >  Article  >  Web Front-end  >  JavaScript Fun Question: Tribonacci Sequence

JavaScript Fun Question: Tribonacci Sequence

黄舟
黄舟Original
2017-02-04 15:10:331738browse

Next, I would like to introduce the big brother of Fibonacci (Fibonacci sequence), the Tribonacci sequence.
As its name suggests, it is very similar to the Fibonacci sequence method, but there are differences.
If we start this sequence with [1,1,1], we will get the following result:
[1,1,1,3,5,9,17,31,...]
As you can see, the fourth item 3 is the sum of the first, second, and third items, the fifth item 5 is the sum of the second, third, and fourth items, and so on...
What if Starting this sequence with [0,0,1], what result will we get?
[0,0,1,1,2,4,7,13,24,...]
After reading this example, you have probably guessed the rule: except for the first three used as the initial sequence numbers, each subsequent number is equal to the sum of the three nearest numbers before it.
Comparing the Fibonacci sequence, the rule is: except for the first two numbers used as the initial sequence, every subsequent number is equal to the sum of the two nearest numbers before it.
Now, do you understand why I said they are brothers?
Even, according to this rule, it can be extended to the Xbonacci sequence, but I will only talk about the Tribonacci sequence in this topic.
Okay, let’s think about how to implement a method of constructing a Tribonacci sequence!
It receives two parameters. The first parameter is an initialization sequence and is an array. The second parameter is a number indicating how many items of the sequence to generate.
The return value is naturally the sequence array after the new item is generated.
For this problem, two situations need to be distinguished:
First, what should I do if the size of this initialization sequence is 3, but I only need to generate 2 items? The answer is simple, just intercept the first two items from the initialization array, and that's OK.

The second case requires the generation of items other than the initialization sequence. It is also very simple. It is like generating the Fibonacci sequence, a cycle, and the new item is composed of the addition of the previous three most recent items. And so on.

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;  
}

The above is the content of JavaScript interesting question: Tribonacci sequence. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn