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

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

Към профила на Вера Бойчева

Резултати

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

Код

def fibonacci( n )
if n==1 or n==2 then 1
else (fibonacci( n - 1 ) + fibonacci( n - 2 )) end
end
def lucas( n )
if n==1 then 2
elsif n==2 then 1
else ( lucas( n - 1 ) + lucas( n - 2 ) ) end
end
def series( function, n)
if function == "fibonacci" then fibonacci(n)
elsif function == "lucas" then lucas(n)
elsif function =="summed" then (fibonacci(n)+lucas(n)) end
end

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

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

Finished in 0.02266 seconds
12 examples, 0 failures

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

Вера обнови решението на 15.10.2014 16:09 (преди над 9 години)

+def fibonacci( n )
+ if n==1 or n==2 then 1
+ else (fibonacci( n - 1 ) + fibonacci( n - 2 )) end
+end
+
+def lucas( n )
+ if n==1 then 2
+ elsif n==2 then 1
+ else ( lucas( n - 1 ) + lucas( n - 2 ) ) end
+end
+
+def series( function, n)
+ if function == "fibonacci" then fibonacci(n)
+ elsif function == "lucas" then lucas(n)
+ elsif function =="summed" then (fibonacci(n)+lucas(n)) end
+end

Вера, малко бележки:

Решението ти може би работи – ще разберем, като пуснем тестовете, но има много стилови проблеми. Много ми е трудно да го прочета.

Непременно се запознай с конвенциите, които ръководството по стил препоръчва. От следващата задача ще отнемаме точки за грубото им неспазване.

По-конкретно:

  • Трябва да има точно по един интервал около "операторите", като <=, -, +, ?, ==, : и т.н.
  • Трябва да отместваш кода си само с два интервала. Не с табове, не с друго. Два интервала.
  • Не трябва да има интервали след отваряща скоба и преди затваряща такава (наппример, редове 1, 3, 6, ...). Още по-лошо е, че на други места не си слагала интервали, наоример редове 13-15.
  • Принципно е добре да се придържаш към низове с единични кавички, освен ако не използваш специалните свойства на низ с двойни кавички (например, интерполация)
  • Излишно много интервали/табове има на ред 3 и ред 9, след else-а.
  • Не ползвай if-then. Пропусни then и сложи тялото на if-а на нов ред. Много по-лесно се чете и това е препоръчаната конвенция.
  • Повечето скоби на 3 и 9 ред са напълно излишни. Ще ти дам пример как да се форматира функцията fibonacci:

      def fibonacci(n)
        if n == 1 or n == 2
          1
        else
          fibonacci(n - 1) + fibonacci(n - 2)
        end
      end
    

    Забележи къде не съм слагал и къде съм слагал интеравли.

    Следвай това форматиране и за другите методи.

  • Може би по-добро име от function на първия аргумент на series e series_type, или само type. И пак – без then.

И най-важното – не предавай в последния момент, за да можем да ти оставим коментари и да реагираш на тях :)