Яни обнови решението на 10.10.2014 16:24 (преди около 10 години)
- Имаш леки проблеми с whitespaces, погледни style guide-а, за да ги адресираш.
-
string е много generic. Всеки string може да се казва string. Точно този
string
има някакво специално значение, опитай се то да бъде явно от името му. Също не съм сигурен доколко съкращението доid
е уместно. - Решението ти ще стане по-четимо ако използваш
if
-elsif
-else
или простоcase
вseries
. - Добре е, че си забелязал зависимост като
(id-3).abs
, но не е сред най-очевидните и очаквани неща в кода. Старай се да имаш ясно и четимо решение, пред по-хитроумно или с по-малко на брой символи. Не е случайно, че сме ви дали до 5 реда на метод. - Леко си разширил дефиниционното множество на нашия fibonacci.
Благодаря за забележките.
Единствено неразбирам, какво означава, че съм разширил дефиниционното множество на fibonacci? Първите индекси отговарят точно, а за следващите не виждам някакво ограничение. Както и защо това не важи за lucas при условие, че им е еднаква както логиката така и условието? Ако става въпрос за нулевия елемент, който се достига от fibonacci(id-2) - нали това си е навалиден индекс по условие?
Според нашата дефиниция:
F(1) = 1 F(2) = 1 F(3) = 2 F(4) = 3 ...
За fibonacci(0)
тя е недефинирана. Няма проблем да си връщаш или гърмиш както си искаш за тези стойности. Но изчислението ти на fibonacci(2)
(и всеки член след това) разчита на факта, че fibonacci(0) == 0
. По условие това не е факт, а случайно следствие от имплементацията ти. lucas
в тази си форма няма този проблем (не разчита на недефинирана стойност).