Решение на Първа задача от Филипа Петкова

Обратно към всички решения

Към профила на Филипа Петкова

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 12 успешни тест(а)
  • 0 неуспешни тест(а)

Код

def fibonacci(number)
number <= 2 ? 1 : fibonacci(number - 1) + fibonacci(number - 2)
end
def lucas(number)
number <= 2 ? number % 2 + 1 : lucas(number - 1) + lucas(number - 2)
end
def series(sequence, number)
if sequence == 'fibonacci'
fibonacci(number)
else
sequence == 'lucas' ? lucas(number) : lucas(number) + fibonacci(number)
end
end

Лог от изпълнението

............

Finished in 0.02305 seconds
12 examples, 0 failures

История (2 версии и 3 коментара)

Филипа обнови решението на 14.10.2014 09:47 (преди около 10 години)

+def fibonacci (n)
+ n <= 2 ? 1 : fibonacci(n-1) + fibonacci(n-2)
+end
+def lucas (n)
+ n <= 2 ? n % 2 + 1 : lucas(n-1) + lucas(n-2)
+end
+def series (sequence , number)
+ if sequence == 'fibonacci'
+ fibonacci(number)
+ else
+ sequence == 'lucas' ? lucas(number) : lucas(number) + fibonacci(number)
+ end
+end

Привет :)

  • За метода series може би ще е добра идея да погледнеш case, което може да направи нещата доста по-четими и разбираеми, също така ще избегнеш if и тернарен оператор.
  • Като цяло тернарния оператор е практика, която е добра в много много редки случаи, и според мен това не е такъв (Малко криптично е и това не е C/C++). В случая може да се замени с един if от вида x if y и оставяне на основната част от рекурсията на последния ред :)
  • Също е хубаво да хвърлиш едно око на style guide-a по въпрос на интервалите (например знака- и интервала след името на метода, също така и , при аргументите)
  • Има известна неконсистентност с изпозването на имената n и number. Аз лично бих препоръчал да използваш второто, защото е по-разбираемо и по-четимо.

Иначе като цяло добро решение :)

Филипа обнови решението на 15.10.2014 15:55 (преди около 10 години)

-def fibonacci (n)
- n <= 2 ? 1 : fibonacci(n-1) + fibonacci(n-2)
+def fibonacci(number)
+ number <= 2 ? 1 : fibonacci(number - 1) + fibonacci(number - 2)
end
-def lucas (n)
- n <= 2 ? n % 2 + 1 : lucas(n-1) + lucas(n-2)
+def lucas(number)
+ number <= 2 ? number % 2 + 1 : lucas(number - 1) + lucas(number - 2)
end
-def series (sequence , number)
+def series(sequence, number)
if sequence == 'fibonacci'
fibonacci(number)
else
sequence == 'lucas' ? lucas(number) : lucas(number) + fibonacci(number)
end
end