Глюк Фибоначи

Jan 19, 2017 23:16

Как-то давно на каком-то интервью, которое было не очно, а через мыло, мне предложили найти способ как вычислить 100-й член ряда Фибоначи. Ну, это 0,1,1,2,3,5,8.... а дальше какждый последующий член является суммой двух предыдущих. Итальнский математик, придумал этот ряд для вычисления роста популяции кроликов. Проблема, однако, в том, что самым большим целочисленным значением в языке С# является 9.223.372.036.854.775.807, а 93-й член ряда Фибоначи 12.200.160.415.121.876.738. То есть, уже 93-й член, не говоря уже об искомом,находятся за пределами вычислительных возможностей. Интервью я успешно провалил, ибо не нашел сходу решение, но меня это задело и я стал искать. Надо сказать нашел, на мой взгляд очень хорошее решение, но было поздно. Осталось только глубокое внутреннее удовлетворение. Однако...
Нынче на курсах алгоритмов, меня снова окунули в происки Фибоначи. Но там, правда не надо было забираться настолько далеко. Тем не менее, я решил найти тот проект и посчитать, чтож добру-то пропадать? И тут я обнаружил, что у меня ошибка! Кошмар! Стал искать, нашел сайт, где кто-то вытставил первые сто чисел Фибоначи, стал сравнивать. Обнаружил, что сбой идет на 60-м члене, а дальше ошибка, понятно, нарастает. Вчера полночи сидел искал. Нашел, все оказалось не так просто, как я думал, но все-таки я победил! Теперь вроде все правильно! Например, 200-й член ряда Фибоначи:
960.229.700.342.510.140.037.611.932.413.038.677.189.525
Надо сказать, что 960 здесь - это додециллионы... Хотя, знать это врядли обязательно, поскольку это число соизмеримо с массой нашей Галактики, выраженной в килограммах.

math, мысли

Previous post Next post
Up