pascalabcnet/InstallerSamples/Algorithms/Recursion/Golomb.pas

12 lines
627 B
ObjectPascal

// Последовательность Голомба G(n) - это такая единственная неубывающая последовательность
// натуральных чисел, в которой n появляется ровно G(n) раз
// 1 2 2 3 3 4 4 4 5 5 5 6 6 6 6 …
// Без кеширования время выполнения огромное за счет повторяющихся рекурсивных вызовов
[Cache]
function G(n: int64): int64 := n = 1 ? 1 : 1 + G(n - G(G(n - 1)));
begin
var n := 100000;
(1..n).Sum(i -> G(i)).Print;
Milliseconds.Print;
end.