(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粉0989790482023-08-17 16:52:41
비네 공식으로 알려진 n번째 피보나치 수를 계산하는 닫힌 공식이 있습니다. 이를 통해 O(1)
의 점근적 시간 복잡도 내에서 n번째 숫자를 얻을 수 있습니다.
다음은 n
에 대한 피보나치 수를 계산하는 방법을 보여주는 예입니다.
이를 확장하여 특정 문제를 해결하세요. n-1
과 n-1
和n
의 값을 계산하는 것이 좋습니다. 그런 다음 k번 반복하여 원하는 값을 얻습니다. 반복하면서 결과를 추적하면 괜찮을 것입니다.
참고: 이 수식은 더 작은 n
값에 대해 정확한 결과를 제공하지만 JavaScript의 부동 소수점 연산 제한으로 인해 더 큰 값에 대해서는 정밀도가 손실될 수 있습니다.