Решение на Първа задача от Любомир Иванов

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

Към профила на Любомир Иванов

Резултати

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

Код

def fibonacci(number)
return 1 if number == 1 || number == 2
fibonacci(number - 1) + fibonacci(number - 2) if number > 2
end
def lucas(number)
return 2 if number == 1
return 1 if number == 2
lucas(number - 1) + lucas(number -2) if number > 2
end
def series(formula, number)
return fibonacci(number) if formula.eql? 'fibonacci'
return lucas(number) if formula.eql? 'lucas'
fibonacci(number) + lucas(number) if formula.eql? 'summed'
end

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

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

Finished in 0.02453 seconds
12 examples, 0 failures

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

Любомир обнови решението на 13.10.2014 10:17 (преди над 9 години)

+def fibonacci(number)
+ return 1 if number == 1 || number == 2
+ fibonacci(number - 1) + fibonacci(number - 2) if number > 2
+end
+
+def lucas(number)
+ return 2 if number == 1
+ return 1 if number == 2
+ lucas(number - 1) + lucas(number -2) if number > 2
+end
+
+def series(formula, number)
+ return fibonacci(number) if formula.eql? 'fibonacci'
+ return lucas(number) if formula.eql? 'lucas'
+ fibonacci(number) + lucas(number) if formula.eql? 'summed'
+end

Привет :)

  • За методите lucas и fibonacci не е нужно да да правиш тази проверка дали числото е по-голямо от 2. Няма да подаваме невалидни данни, а ти проверяваш другите случаи.
  • За series ще е доста по-четимо, ако използваш case вместо 3 if-а. Може да го погледнеш :)
  • Също имаш на едно място където имаш дето имаш проблем с - и интервалите.
  • За имената на аргументите на series: formula може би не е най-подходящото име - не подаваш формула. Помисли за някакво друго име :)

Ако изключим тези неща - добро решение :)