Heim  >  Artikel  >  Web-Frontend  >  Lustige JavaScript-Frage: Tribonacci-Folge

Lustige JavaScript-Frage: Tribonacci-Folge

黄舟
黄舟Original
2017-02-04 15:10:331688Durchsuche

Als nächstes möchte ich die Tribonacci-Folge vorstellen, den großen Bruder von Fibonacci.
Wie der Name schon sagt, ist es der Fibonacci-Sequenzmethode sehr ähnlich, es gibt jedoch Unterschiede.
Wenn wir diese Sequenz mit [1,1,1] beginnen, erhalten wir das folgende Ergebnis:
[1,1,1,3,5,9,17,31,...]
Wie Sie sehen können, ist der vierte Term 3 die Summe des ersten, zweiten und dritten Termes, der fünfte Term 5 ist die Summe des zweiten, dritten und vierten Termes und so weiter...
Was wäre, wenn begonnen wird? Welches Ergebnis erhalten wir in dieser Sequenz mit [0,0,1]?
[0,0,1,1,2,4,7,13,24,...]
Nachdem Sie dieses Beispiel gelesen haben, haben Sie wahrscheinlich die Regel erraten: mit Ausnahme der ersten drei, die als Initialen verwendet werden Bei Folgezahlen ist jede nachfolgende Zahl gleich der Summe der drei nächsten Zahlen davor.
Beim Vergleich der Fibonacci-Folge gilt folgende Regel: Mit Ausnahme der ersten beiden Zahlen, die als Anfangsfolge verwendet werden, ist jede nachfolgende Zahl gleich der Summe der beiden nächsten Zahlen davor.
Verstehst du jetzt, warum ich gesagt habe, dass sie Brüder sind?
Auch nach dieser Regel kann sie auf die Xbonacci-Folge erweitert werden, aber für dieses Thema werde ich nur auf die Tribonacci-Folge eingehen.
Okay, lassen Sie uns darüber nachdenken, wie wir eine Methode zur Konstruktion der Tribonacci-Folge implementieren können!
Der erste Parameter ist eine Initialisierungssequenz und ein Array. Der zweite Parameter ist eine Zahl, die angibt, wie viele Elemente der Sequenz generiert werden sollen.
Der Rückgabewert ist natürlich das Sequenzarray nach der Generierung des neuen Elements.
Für dieses Problem müssen zwei Situationen unterschieden werden:
Erstens: Was soll ich tun, wenn die Größe dieser Initialisierungssequenz 3 beträgt, ich aber nur 2 Elemente generieren muss? Die Antwort ist einfach: Fangen Sie einfach die ersten beiden Elemente aus dem Initialisierungsarray ab und das ist in Ordnung.

Der zweite Fall erfordert die Generierung anderer Elemente als der Initialisierungssequenz. Genau wie die Generierung der Fibonacci-Sequenz handelt es sich um eine Schleife. Das neue Element besteht aus der Addition des vorherigen drei aktuelle Artikel und so weiter.

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

Das Obige ist der Inhalt einer interessanten JavaScript-Frage: Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn