Любомир обнови решението на 09.10.2014 16:38 (преди около 10 години)
+def fibonacci(x)
+ (x == 1 or x ==2) ? 1 : fibonacci(x-1) + fibonacci(x-2)
+end
+
+def lucas(x)
+ (x == 1 or x ==2) ? 3-x : lucas(x-1) + lucas(x-2)
+ #3-x returns 2 if x==1 and returns 1 if x==2
+end
+
+def lucas_or_summed(fun, member)
+ fun == 'lucas' ? lucas(member) : fibonacci(member) + lucas(member)
+end
+
+
+def series(fun, member)
+ fun == 'fibonacci' ? fibonacci(member) : lucas_or_summed(fun, member)
+end
- Имаш известни проблеми с конвенции (главно whitespaces). Консултирай се със style guide-а, за да ги адресираш.
- В Ruby, подобно на повечето езици има нормален
if
:) Добре е, че си видял3-x
зависимост, но самият факт, че се е наложило да напишеш коментар подсказва, че може би има по-добър начин. Стреми се към яснота, не към остроумност на кода. :) - Горното важи и за нуждата да съкратиш до
fun
. Не е случайно, че сме ви дали до 5 реда на метод. - Не съм напълно сигурен как се чувствам отностно
lucas_or_summed
. Ако в условието имаше 50 различни редици щеше ли да напишеш 49 различни методаx_or_y
?