login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

A363962
a(1)=1; for n > 1, if n appears in the sequence then a(n) = lastindex(n), where lastindex(n) is the index of the last appearance of n. Otherwise a(n) = a(n-1) - n unless that result is already in the sequence or would be negative; otherwise, a(n) = a(n-1) * n.
1
1, 2, 6, 24, 19, 3, 21, 13, 4, 40, 29, 17, 8, 112, 97, 81, 12, 216, 5, 100, 7, 154, 131, 4, 100, 74, 47, 1316, 11, 330, 299, 267, 234, 200, 165, 129, 92, 54, 15, 10, 410, 368, 325, 281, 236, 190, 27, 1296, 1247, 1197, 1146, 1094, 1041, 38, 2090, 2034, 1977, 1919, 1860, 1800, 1739, 1677, 1614
OFFSET
1,2
EXAMPLE
a(6) = 3, as a(3) = 6 = n, thus a(6) = 3.
a(28) = 1316 because subtracting 28 from the previous term (47) would give 19, which is already in the sequence, so multiply 47 by 28 to get 1316.
a(100) = 25, as a(25) = 100 = n, thus a(100) = 25.
MATHEMATICA
a[1] = 1; a[n_] := a[n] = Module[{s = Array[a, n - 1], a1}, If[MemberQ[s, n], Position[s, n][[-1, 1]], a1 = a[n - 1] - n; If[a1 < 0 || MemberQ[s, a1], a[n - 1]*n, a1]]]; Array[a, 100] (* Amiram Eldar, Jul 23 2023 *)
PROG
(MATLAB)
function a = A363962( max_n )
a = 1;
for n = 2:max_n
r = find(a == n, 1, 'last');
if ~isempty(r)
a(n) = r;
else
k = a(n-1) - n;
if k > 0 && isempty(find(a == k, 1))
a(n) = k;
else
a(n) = a(n-1) * n;
end
end
end
end % Thomas Scheuerle, Jul 03 2023
CROSSREFS
KEYWORD
nonn
AUTHOR
Kelvin Voskuijl, Jun 29 2023
STATUS
approved