Елена обнови решението на 14.10.2014 00:47 (преди около 10 години)
+def series(type, n)
+ if type == "summed"
+ summed(n)
+ else
+ type == "fibonacci" ? fibonacci_sum(n) : lucas_sum(n)
+ end
+end
+
+def fibonacci_sum(n)
+ n <= 1 ? n : fibonacci_sum(n - 1) + fibonacci_sum(n - 2)
+end
+
+def lucas_sum(n)
+ return lucas_sum(n - 1) + lucas_sum(n - 2) if n > 2
+ n == 0 ? 0 : n == 1? 2 : 1
+end
+
+def summed(n)
+ fibonacci_sum(n) + lucas_sum(n)
+end
Здрасти
- Разгледай
case
statement в руби, виж също как се индентира правилно тук. Може да ти бъде полезен заseries
. - Не е хубаво да се влагат тернарни оператори, става нечетимо. Помисли как да ги пренапишеш с
if-else
или сcase
. Ще стане малко по-дълго, но и по-разбираемо. - Защо нямаш
summed_sum
? Защото не е добро име, както не са добри иfibonacci_sum
иlucas_sum
. Можеш просто да махнеш този постфикс_sum
, защото е подвеждащ (ако сумираше всички елементи от редицата до n-тия, тогава щеше да е ок).