Séquence de Fibonacci restreinte
P粉463811100
P粉463811100 2023-08-16 19:46:31
0
1
499
<p>Je souhaite implémenter une fonction qui génère la séquence de Fibonacci de <code>N</code> à <code>N+K</code> et renvoie <code>array[K]< ;/ code>, dont <code>(0<=N<=370; 0<=N+K<=371; 0<=K<=255)</code>. Lorsque l'entrée était <code>n:370, k:1</code>, la dernière tentative, <code>n2</code>, dépassait le besoin et la portée. Je souhaite simplifier mon code et ne pas utiliser plusieurs instructions <code>if</code> Merci. </p><p><strong>Mise à jour : </strong></p><p>Il s'agit d'un contrat intelligent pour la blockchain où <code>int</code> Lorsque <code>N+K >= 369</code>, la dernière boucle de <code>n2</code> </p> <pre class="brush:js;toolbar:false;">fonction getFibSeq(n, k) { soit les nombres = []; soit n1 = 0 ; soit n2 = 1 ; soit je = 0 ; soit j = (n + k); tandis que (i < j){ if((i - n) >= 0){ sortie.push(n1); } si((j - i - 1) > 0){ laissez temp = n1 ; n1 = n2 ; si ((j - i - 2) > 0) { n2 = température + n2 ; } } je = je + 1 ; } renvoyer la sortie ; } ≪/pré> <p><br /></p>
P粉463811100
P粉463811100

répondre à tous(1)
P粉098979048

Il existe une formule fermée pour calculer le nième nombre de Fibonacci, connue sous le nom de formule Binet. Cela vous permet d'obtenir le nième nombre dans la complexité temporelle asymptotique de O(1).

Voici un exemple montrant comment calculer le nombre de Fibonacci pour n'importe quel n.

Étendez ceci pour résoudre votre problème spécifique. Je suggère de calculer les valeurs de n-1 et n-1n. Ensuite, répétez k fois pour obtenir la valeur souhaitée. Gardez une trace des résultats au fur et à mesure que vous itérez et tout devrait bien se passer.

function fibonacci(n) {
    const phi = (1 + Math.sqrt(5)) / 2;
    const psi = (1 - Math.sqrt(5)) / 2;  // phi的负倒数
    return Math.round((Math.pow(phi, n) - Math.pow(psi, n)) / Math.sqrt(5));
}

// 测试
console.log(fibonacci(10));  // 输出:55

Remarque : Bien que cette formule donne des résultats précis pour des valeurs n plus petites, la précision peut être perdue pour des valeurs plus grandes en raison des limitations des opérations à virgule flottante en JavaScript.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal