PowerShell v2 +, 85 79 69 bayt
param($n)$b=1,1;2..$n|%{$b+=$b[$_-$b[$_-1]]+$b[$_-$b[$_-2]]};$b[$n-1]
Girdiyi alır $n
, $b
bir dizi olarak ayarlar @(1, 1)
, sonradan bir döngüye girer 2 .. $n
. Her bir yineleme $b
, dizideki en son hesaplamaya basit +=
ve dizilimin tanımını uygular. Ardından uygun sayıyı çıkarıyoruz $b
( -1
çünkü PowerShell'deki diziler sıfır dizinli). Bu eserler ise $n
edilir 1
veya 2
bu değerlerin hem alt endeksleri içine önceden doldurulmuş çünkü $b
önemsiz baştan, yani bile döngü çiviler, yine de göz ardı ediyor.
Özyinelemeli çözüm 78 76 bayt
$a={param($k)if($k-lt3){1}else{(&$a($k-(&$a($k-1))))+(&$a($k-(&$a($k-2))))}}
İlk defa cevap olarak bir lambda eşdeğeri kullandım, çünkü genellikle yinelemeli bir çözüm daha kısadır (iç içe geçmiş parelerin hepsinde görebileceğiniz gibi). Ancak, bu durumda, iç içe parenler, iç içe dizi çağrıları ile yinelemeli çözümde neredeyse yinelenir, bu nedenle özyinelemeli çözüm daha kısadır. Hayır, yinelemeli çözüm gerçekten daha kısadır (yukarıya bakın).
Bunun gibi yürütme operatörü aracılığıyla arayın &$a 20
. Sadece basit bir özyinelemeli arama.