Решение на Първа задача от Бисер Кръстев

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

Към профила на Бисер Кръстев

Резултати

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

Код

def fibonacci(index)
if index <= 2 then return 1
else return fibonacci(index-1) + fibonacci(index-2)
end
end
def lucas(index)
if index <= 2 then return 3-index
else return lucas(index-1) + lucas(index-2)
end
end
def series(name, index)
case name
when "fibonacci" then return fibonacci(index)
when "lucas" then return lucas(index)
when "summed" then return fibonacci(index)+lucas(index)
end
end

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

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

Finished in 0.02055 seconds
12 examples, 0 failures

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

Бисер обнови решението на 14.10.2014 23:07 (преди около 10 години)

+def fibonacci(index)
+ if index <= 2 then return 1
+ else return fibonacci(index-1) + fibonacci(index-2)
+ end
+end
+
+def lucas(index)
+ if index <= 2 then return 3-index
+ else return lucas(index-1) + lucas(index-2)
+ end
+end
+
+def series(name, index)
+ case name
+ when "fibonacci" then return fibonacci(index)
+ when "lucas" then return lucas(index)
+ when "summed" then return fibonacci(index)+lucas(index)
+ end
+end
  • Предпочитай равенствата пред неравенствата. Дават по ясна представа за дъното на рекурсията и обозначават по-добре допустимите стойности. Ако гледам кода без да знам условието израз от типа lucas(-1) = 4 е объркващ. Примерна алтернатива:
return 2 if index == 1
return 1 if index == 2
  • Не е нужно изрично да ползваш return, можеш да го изпускаш
  • Добро решение като цяло :thumbsup: