Габриела обнови решението на 11.10.2014 14:41 (преди около 10 години)
+def fibonacci(number)
+ number <= 1 ? number : fibonacci(number - 1) + fibonacci(number - 2)
+end
+
+def lucas(number)
+ if number == 1
+ 2
+ elsif number == 2
+ 1
+ else
+ lucas(number - 1) + lucas(number - 2)
+ end
+end
+
+def series(string, number)
+ if (string == 'fibonacci')
+ fibonacci(number)
+ elsif (string == 'lucas')
+ lucas(number)
+ else
+ fibonacci(number) + lucas(number)
+ end
+end
Като цяло доста хубаво решение. Няколко забележки:
- Не ограждай в скоби условията на
if
. Можеш да се консултираш със style guide-a за повече яснота. -
string е generic име. Опитай се когато именуваш неща да изразяваш семантиката, която стои зад тях. Всеки
string
може да е string. Какво значение има точно този string, в този контекст? - Може да експериментираш дали ще изглежда естетически по-добре, ако използваш
case
(when
-then
). Така няма да имаш "назъбено" изглеждащ код (редуване на редове със съдържание и почти празни такива) вlucas
. - Леко си разширила дефиниционното множество на нашия fibonacci. Няма проблем да връщаш или гърмиш както си искаш за недефинираните стойности, но се опитвай имплементацията на дефинираните такива да не разчита на тях.
Здравейте, при опит да кача ново (поправено) решение на задачата ми изписва: We're sorry, but something went wrong. Това означава ли, че нямам право да кача друго решение или просто трябва да го кача тук като коментар?
Нито едното от двете. По принцип трябва да можеш да предаваш нови решения, докато не изтече срока. Би ли качила screenshot във форума или го прати на fmi@ruby.bg, ако в него се вижда кодът ти?