Решение на Първа задача от Васил Бунарджиев

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

Към профила на Васил Бунарджиев

Резултати

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

Код

def fibonacci(index)
return 1 if index == 1 or index == 2
fibonacci(index - 1) + fibonacci(index - 2)
end
def lucas(index)
return 2 if index == 1
return 1 if index == 2
lucas(index - 1) + lucas(index - 2)
end
def series(function_name,index)
return fibonacci(index) if function_name == 'fibonacci'
return lucas(index) if function_name == 'lucas'
return fibonacci(index)+lucas(index) if function_name == 'summed'
end

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

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

Finished in 0.02257 seconds
12 examples, 0 failures

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

Васил обнови решението на 15.10.2014 00:08 (преди над 9 години)

+def fibonacci(index)
+ if index <= 1
+ return 1
+ end
+ fibonacci(index - 1) + fibonacci(index - 2)
+end
+
+def lucas(index)
+ return 2 if index == 1
+ return 1 if index == 2
+ lucas(index - 1) + lucas(index - 2)
+end
+
+def series(function,index)
+ return fibonacci(index) if function == 'fibonacci'
+ return lucas(index) if function == 'lucas'
+ return fibonacci(index)+lucas(index) if function == 'summed'
+end
  • Бъгът ти е във fibonacci. Правиш грешка защото редицата ти счита, че fibonacci(0) = 1 което не е така по условие и това води до по големи от верните стойности.
  • Предпочитай равенствата пред неравенствата както в lucas. Лесно се забелязва предполагаемото дъно на рекурсията.
  • Името function бих заменил с function_name. Показва по-ясно какво се очаква като параметер, function по-скоро придава значение на lambda.
  • Виж case в документацията.

Васил обнови решението на 15.10.2014 13:40 (преди над 9 години)

def fibonacci(index)
- if index <= 1
+ if index == 1
return 1
end
fibonacci(index - 1) + fibonacci(index - 2)
end
def lucas(index)
return 2 if index == 1
return 1 if index == 2
lucas(index - 1) + lucas(index - 2)
end
-def series(function,index)
- return fibonacci(index) if function == 'fibonacci'
- return lucas(index) if function == 'lucas'
- return fibonacci(index)+lucas(index) if function == 'summed'
+def series(function_name,index)
+ return fibonacci(index) if function_name == 'fibonacci'
+ return lucas(index) if function_name == 'lucas'
+ return fibonacci(index)+lucas(index) if function_name == 'summed'
end

Васил обнови решението на 15.10.2014 13:46 (преди над 9 години)

def fibonacci(index)
- if index == 1
- return 1
- end
+ return 1 if index == 1
+ return 1 if index == 2
fibonacci(index - 1) + fibonacci(index - 2)
end
def lucas(index)
return 2 if index == 1
return 1 if index == 2
lucas(index - 1) + lucas(index - 2)
end
def series(function_name,index)
return fibonacci(index) if function_name == 'fibonacci'
return lucas(index) if function_name == 'lucas'
return fibonacci(index)+lucas(index) if function_name == 'summed'
end

Васил обнови решението на 15.10.2014 13:47 (преди над 9 години)

def fibonacci(index)
- return 1 if index == 1
- return 1 if index == 2
+ return 1 if index == 1 or index == 2
fibonacci(index - 1) + fibonacci(index - 2)
end
def lucas(index)
return 2 if index == 1
return 1 if index == 2
lucas(index - 1) + lucas(index - 2)
end
def series(function_name,index)
return fibonacci(index) if function_name == 'fibonacci'
return lucas(index) if function_name == 'lucas'
return fibonacci(index)+lucas(index) if function_name == 'summed'
end