Георги обнови решението на 14.10.2014 14:02 (преди около 11 години)
+def series(string, index)
+ if string == 'fibonacci' then return fibonacci(index)
+ elsif string == 'lucas'
+ return lucas(index)
+ elsif string == 'summed'
+ return summed(index)
+ end
+end
+
+def fibonacci(n)
+ if n <= 2
+ return 1
+ else
+ return fibonacci(n - 1) + fibonacci(n - 2)
+ end
+end
+
+def lucas(n)
+ if n == 1 then return 2
+ elsif n == 2
+ return 1
+ else
+ return lucas(n - 1) + lucas(n - 2)
+ end
+end
+
+def summed(n)
+ if n == 1 then return 3
+ elsif n == 2
+ return 2
+ else
+ return fibonacci(n) + lucas(n)
+ end
+end
Всичките
return-и са излишни. В руби функциите връщат последния остойностен израз.Можеш да разгледаш
casestatement-a. Той е полезен когато имаш повече клаузи вif-а и те правят проверка спрямо един и същ елемент.fibonacci,lucasиsummedса ти почти еднакви, можеш да помислиш как да измъкнеш повтарящата се логика в отделна функция.Веднъж ползваш
n, веднъж ползвашindex. Бъди консистентен.indexе по-добре от двете.stringне е добро име за променлива. Помисли какво е значението на тозиstringи му дай друго име :).
