Деян обнови решението на 10.10.2014 17:48 (преди около 10 години)
+def fibonacci(n)
+ n <= 2 ? 1 : fibonacci(n - 1) + fibonacci(n - 2)
+end
+
+def lucas(n)
+ return 2 if n == 1
+ return 1 if n == 2
+ lucas(n - 1) + lucas(n - 2)
+end
+
+def series(function_type, number)
+ return fibonacci number if function_type.eql? "fibonacci"
+ return lucas number if function_type.eql? "lucas"
+ fibonacci(number) + lucas(number) if function_type.eql? "summed"
+end
Браво, това е една от най-добрите първоначални версии на решение до момента. Само дребни забележки:
- Не си в някой от случаите, в които би искал да пропуснеш скоби при извикване на метод. Виж style guide-a за повече яснота.
- Имаш малък whitespace проблем.
- Можеш да експериментираш дали кодът ще изглежда по-добре ако замениш
return x if y
сif
-elsif
-else
илиcase
. - Имаше ли някаква причина да използваш
eql?
, а не==
? - fibonacci и lucas са имена на, а не типове редици. Това беше наша грешка в условието, поправихме се.