Je souhaite implémenter une fonction qui génère la séquence de Fibonacci de N
à N+K
et renvoie array[K]< ;/ code>, dont
(0<=N<=370; 0<=N+K<=371; 0<=K<=255)
. Lorsque l'entrée était n:370, k:1
, la dernière tentative, n2
, dépassait le besoin et la portée. Je souhaite simplifier mon code et ne pas utiliser plusieurs instructions if
Merci.
Mise à jour :
Il s'agit d'un contrat intelligent pour la blockchain où int
Lorsque N+K >= 369
, la dernière boucle de n2
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é>
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
etn-1
和n
. 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.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.