Васил обнови решението на 15.10.2014 00:08 (преди около 10 години)
+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
в документацията.
.