А какой там алгоритм расчета? Обязательно ли запоминать промежуточные результаты, или их можно заново рассчитать, когда они понадобятся?