찾다

 >  Q&A  >  본문

제한된 피보나치 수열

<p><code>N</code>에서 <code>N+K</code>까지의 피보나치 수열을 생성하고 <code>array[K]< ;/ code> 요소 중 (0<=N<=370; 0<=N+K<=371; 0<=K<=255)입니다. 입력이 <code>n:370, k:1</code>일 때 마지막 시도인 <code>n2</code>는 필요와 범위를 벗어났습니다. 코드를 단순화하고 <code>if</code> 문을 여러 개 사용하지 않으려고 합니다. 감사해요. </p><p><strong>업데이트: </strong></p><p>이것은 <code>int</code>인 블록체인용 스마트 계약입니다. .<code>N+K>= 369</code>이면 <code>n2</code>의 마지막 루프가 오버플로됩니다. </p> <pre class="brush:js;toolbar:false;">함수 getFibSeq(n, k) { 숫자 = []; n1 = 0이라고 하자; n2 = 1이라고 하자; 내가 = 0이라고 하자; j = (n + k)라고 하자; while (i < j){ if((i - n) >= 0){ 출력.푸시(n1); } if((j - i - 1) > 0){ 온도 = n1로 설정합니다. n1 = n2; if((j - i - 2) > 0) { n2 = 온도 + n2; } } 나는 = 나는 + 1; } 출력을 반환합니다. } </pre> <p><br /></p>
P粉463811100P粉463811100476일 전504

모든 응답(1)나는 대답할 것이다

  • P粉098979048

    P粉0989790482023-08-17 16:52:41

    비네 공식으로 알려진 n번째 피보나치 수를 계산하는 닫힌 공식이 있습니다. 이를 통해 O(1)의 점근적 시간 복잡도 내에서 n번째 숫자를 얻을 수 있습니다.

    다음은 n에 대한 피보나치 수를 계산하는 방법을 보여주는 예입니다.

    이를 확장하여 특정 문제를 해결하세요. n-1n-1n의 값을 계산하는 것이 좋습니다. 그런 다음 k번 반복하여 원하는 값을 얻습니다. 반복하면서 결과를 추적하면 괜찮을 것입니다.

    으아악

    참고: 이 수식은 더 작은 n 값에 대해 정확한 결과를 제공하지만 JavaScript의 부동 소수점 연산 제한으로 인해 더 큰 값에 대해서는 정밀도가 손실될 수 있습니다.

    회신하다
    0
  • 취소회신하다