Симеон обнови решението на 15.10.2014 16:26 (преди около 10 години)
+def series(string, int)
+ if string == 'fibonacci'
+ return fibonacci(int)
+ elsif string == 'lucas'
+ return lucas(int)
+ end
+ return fibonacci(int) + lucas(int)
+end
+
+def fibonacci(int)
+ if int == 1
+ return 1
+ elsif int == 2
+ return 1
+ else
+ return fibonacci(int+1) + fibonacci(int+2)
+ end
+end
+
+def lucas(int)
+ if int == 1
+ return 2
+ elsif int == 2
+ return 1
+ else
+ return lucas(int+1) + lucas(int+2)
+ end
+end
Мони, малко бележки:
Непременно се запознай с конвенциите, които ръководството по стил препоръчва. От следващата задача ще отнемаме точки за грубото им неспазване.
- Трябва да отместваш кода си само с два интервала. Не с табове, не с друго. Два интервала.
- Трябва да има точно по един интервал около "операторите", като
<=
,-
,+
,?
,==
,:
и т.н. - Ако ползваш
else
вseries
, ще отпадне нуждата да ползвашreturn
. Това ще направи кода по-ясен и прост. А и сега няма нужда от последнияreturn
. - Във
fibonacci
няма нужда отreturn
никъде. Същото и заlucas
. -
int
не е добро име за променлива в случая. Твърде общо е.number
,index
,series_index
илиn
са по-добри.
И, най-важното – не предавай в последния момент, за да можем да ти оставим коментари и да реагираш на тях :)
Да, ясно ми е. Благодаря, Митьо. По принцип със spaces съм писал кода, но не знам от къде се е получило това с табулациите. Следващия път ще го коригирам. :)