Решение на Първа задача от Звездалина Димитрова

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

Към профила на Звездалина Димитрова

Резултати

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

Код

def fibonacci(current_index)
return 1 if (current_index == 2 || current_index == 1)
fibonacci(current_index - 1) + fibonacci(current_index - 2)
end
def lucas(current_index)
return 1 if (current_index == 2)
return 2 if (current_index == 1)
lucas(current_index - 1) + lucas(current_index - 2)
end
def series(name_of_series, current_index)
if (name_of_series== "fibonacci") #с case статват 6 реда
return fibonacci(current_index)
end
if (name_of_series== "lucas")
return lucas(current_index)
end
fibonacci(current_index) + lucas(current_index)
end

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

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

Finished in 0.0227 seconds
12 examples, 0 failures

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

Звездалина обнови решението на 13.10.2014 13:30 (преди около 10 години)

+def fibonacci(n)
+ if (n==2 || n==1)
+ return 1
+ end
+ fibonacci(n-1) + fibonacci(n-2)
+end
+
+def lucas(n)
+ if (n==2)
+ return 1
+ end
+ if (n==1)
+ return 2
+ end
+ lucas(n-1) + lucas(n-2)
+end
+
+def series(string, n)
+ if (string == "fibonacci")
+ return fibonacci(n)
+ end
+ if (string == "lucas")
+ return lucas(n)
+ end
+ fibonacci(n) + lucas(n)
+end

Звездалина обнови решението на 13.10.2014 13:34 (преди около 10 години)

def fibonacci(n)
- if (n==2 || n==1)
+ if (n == 2 || n == 1)
return 1
end
- fibonacci(n-1) + fibonacci(n-2)
+ fibonacci(n - 1) + fibonacci(n - 2)
end
def lucas(n)
- if (n==2)
+ if (n == 2)
return 1
end
- if (n==1)
+ if (n == 1)
return 2
end
- lucas(n-1) + lucas(n-2)
+ lucas(n - 1) + lucas(n - 2)
end
def series(string, n)
if (string == "fibonacci")
return fibonacci(n)
end
if (string == "lucas")
return lucas(n)
end
fibonacci(n) + lucas(n)
end

Привет :)

  • Има една по-готина употреба на if, за която може да прочетеш (тя е вър формата x if y). Тя също така ще ти спести използването на else.
  • Може вместо да използваш няколко if-a, да използваш case, който е switch-a в Руби.
  • За имената на аргументите - хубаво е да се използват по-описателни имена, който да имат някакъв смисъл в дадения контекст. n е прекалено кратко и не носи особена информация (Това не е C/C++). За string пък е много общо и може да означава почти всичко, което не е хубаво. Пробвай да дадеш някакви по-добри имена. :)

Иначе - добро решение :)

Звездалина обнови решението на 15.10.2014 00:26 (преди около 10 години)

-def fibonacci(n)
- if (n == 2 || n == 1)
- return 1
- end
- fibonacci(n - 1) + fibonacci(n - 2)
+def fibonacci(current_index)
+ return 1 if (current_index == 2 || current_index == 1)
+ fibonacci(current_index - 1) + fibonacci(current_index - 2)
end
-def lucas(n)
- if (n == 2)
- return 1
- end
- if (n == 1)
- return 2
- end
- lucas(n - 1) + lucas(n - 2)
+def lucas(current_index)
+ return 1 if (current_index == 2)
+ return 2 if (current_index == 1)
+ lucas(current_index - 1) + lucas(current_index - 2)
end
-def series(string, n)
- if (string == "fibonacci")
- return fibonacci(n)
+def series(name_of_series, current_index)
+ if (name_of_series== "fibonacci") #с case статват 6 реда
+ return fibonacci(current_index)
end
- if (string == "lucas")
- return lucas(n)
+ if (name_of_series== "lucas")
+ return lucas(current_index)
end
- fibonacci(n) + lucas(n)
+ fibonacci(current_index) + lucas(current_index)
end