Jujukan Fibonacci terhad
P粉463811100
2023-08-16 19:46:31
<p>Saya mahu melaksanakan fungsi yang menjana jujukan Fibonacci daripada <kod>N</kod> kepada <kod>N+K</kod> kod> elemen, yang mana <kod>(0<=N<=370; 0<=N+K<=371; 0<=K<=255)</kod>.
Apabila input ialah <kod>n:370, k:1</code>, percubaan terakhir, <kod>n2</kod>, adalah di luar keperluan dan skop. Saya mahu memudahkan kod saya dan tidak menggunakan berbilang <code>if</code> terima kasih. </p><p><strong>Kemas kini: </strong></p><p>Ini adalah kontrak pintar untuk blockchain di mana <code>int</code> Ia adalah 256 bit . Apabila <kod>N+K >= 369</kod>, gelung terakhir <kod>n2</kod> </p>
<pre class="brush:js;toolbar:false;">fungsi getFibSeq(n, k) {
biarkan nombor = [];
biarkan n1 = 0;
biarkan n2 = 1;
biarkan i = 0;
biarkan j = (n + k);
manakala (i < j){ jika((i - n) >= 0){
output.push(n1);
}
if((j - i - 1) > 0){
biarkan suhu = n1;
n1 = n2;
if((j - i - 2) > 0) {
n2 = temp + n2;
}
}
i = i + 1;
}
pulangan keluaran;
}
</pra>
<p><br /></p>
Terdapat formula tertutup untuk mengira nombor Fibonacci ke-1, dikenali sebagai formula Binet. Ini membolehkan anda mendapatkan nombor ke-n dalam kerumitan masa asimptotik
O(1)
.Berikut ialah contoh yang menunjukkan cara mengira nombor Fibonacci untuk mana-mana
n
.Lanjutkan ini untuk menyelesaikan masalah khusus anda. Saya cadangkan mengira nilai
n-1
dann-1
和n
. Kemudian ulang k kali untuk mendapatkan nilai yang dikehendaki. Jejaki keputusan semasa anda berulang dan anda sepatutnya baik-baik saja.Nota: Walaupun formula ini memberikan hasil yang tepat untuk nilai
n
yang lebih kecil, ketepatan mungkin hilang untuk nilai yang lebih besar disebabkan oleh pengehadan operasi titik terapung dalam JavaScript.