открытая форма обычно задается как уравнение, которое необходимо решить.Например,
a(0) = 1 -- base case
a(n) = b * a(n-1) -- recurrence relation
Чтобы преобразовать его в закрытую форму , вы решаете рекуррентное соотношение .В этом случае повторное замещение до достижения базового варианта дает вам
a(n) = b * a(n-1) = b * b + a(n-2) = ... = b * b * ... * b * a(0) = b^n
Это более эффективно, поскольку мощности можно оценить за логарифмическое время в n (то есть пропорционально лог1015 * n ), тогда как исходное отношение рекуррентности занимает линейное время в n .
Существует много методов, используемых для решения отношений рекуррентности.Некоторые примеры можно найти в статье Википедии .Важно понимать, что не все рекуррентные отношения могут быть решены, однако - фактически, большинство не может быть решено (именно поэтому программирование важно!)