Деян обнови решението на 14.10.2014 22:35 (преди около 10 години)
+def series type, index
+ return fibonacci(index) if type == "fibonacci"
+ return lucas(index) if type == "lucas"
+ return fibonacci(index) + lucas(index) if type == "summed"
+end
+
+def fibonacci index
+ index <= 2 ? 1 : fibonacci(index - 1) + fibonacci(index - 2)
+end
+
+def lucas index
+ return 2 if index == 1
+ return 1 if index == 2
+ lucas(index - 1) + lucas(index - 2)
+end
Бележките ми са основно стилови. Като цяло, решението ти е добро.
- Когато имаш методи с аргументи, слагай скобите (визирам дефиницията на методите)
- Има липса на симетрия между граничните случаи на fibonacci и на lucas; в единия ползваш тернарен оператор за граничното условие, в другия if-ове и return; аз бих използвал if-ове и при fibonacci, поради следните причини: 1) кодът става по-прост и по-ленсочетим; добре е да се избягва тернарният оператор; 2) за да има симетрия с lucas - така кодът пак ще е по-лесен за възприемане от четящия
- Принципно е добре да се придържаш към низове с единични кавички, освен ако не използваш специалните свойства на низ с двойни кавички (например, интерполация)