PowerShell v2 +, 85 79 69 byte
param($n)$b=1,1;2..$n|%{$b+=$b[$_-$b[$_-1]]+$b[$_-$b[$_-2]]};$b[$n-1]
Mengambil input $n
, menetapkan $b
menjadi array @(1, 1)
, lalu memasukkan loop dari 2 .. $n
. Setiap iterasi kami tempelkan ke $b
perhitungan terbaru dalam urutan dengan sederhana +=
dan definisi urutan. Kami kemudian mengeluarkan nomor yang sesuai dari $b
(dengan -1
array karena di PowerShell diindeks nol). Ini berfungsi jika $n
ada 1
atau 2
karena kedua nilai tersebut telah diisi sebelumnya ke dalam indeks yang lebih rendah $b
sejak awal, jadi meskipun loop diack pada junk, toh diabaikan.
Solusi rekursif 78 76 byte
$a={param($k)if($k-lt3){1}else{(&$a($k-(&$a($k-1))))+(&$a($k-(&$a($k-2))))}}
Pertama kali saya menggunakan jawaban yang setara dengan lambda, karena biasanya solusi berulang lebih pendek (seperti yang Anda lihat dari semua parenting bersarang). Tetapi, dalam kasus ini, parested bersarang hampir digandakan dalam solusi iteratif dengan panggilan array bersarang, sehingga solusi rekursif lebih pendek. Tidak, solusi berulang memang lebih pendek (lihat di atas).
Sebut saja melalui operator eksekusi, seperti &$a 20
. Hanya panggilan rekursif langsung.