Любослава обнови решението на 12.10.2014 16:19 (преди около 10 години)
+def series(sequence, number)
+
+ case sequence
+ when "fibonacci" then return fibonacci(number)
+ when "lucas" then return lucas(number)
+ when "summed" then return summed(number)
+ end
+
+end
+
+def fibonacci(number)
+
+ case number
+ when 1 then return 1
+ when 2 then return 1
+ else return fibonacci(number - 1) + fibonacci(number - 2)
+ end
+
+end
+
+def lucas(number)
+
+ case number
+ when 1 then return 2
+ when 2 then return 1
+ else return lucas(number - 1) + lucas(number - 2)
+ end
+
+end
+
+def summed(number)
+
+ fibonacci(number) + lucas(number)
+
+end
Като цяло доста прилично решение, харесва ми. Само няколко забележки:
- Не слагай ненужни нови редове в началото и края на методите.
- Върнатата стойност на
case
е последният оценен израз в match-натата клауза иnil
ако няма такава. Отsummed
си личи, че знаеш какво връщат методите по принцип. Съответно можеше да пропуснеш абсолютно всичкиreturn
-и в решението си. - В Ruby се смята за прилежно да подравняваш някои конструкции, ако ги използваш на съседни редове. Сред тях са
=
иthen
.
А, вярно, не бях сигурна дали в case-a може да се връща директно без return. Мерси. :) А какво ще рече да подравнявам = и then?