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”).

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

%I #22 Aug 26 2023 02:52:43

%S 1,2,6,24,19,3,21,13,4,40,29,17,8,112,97,81,12,216,5,100,7,154,131,4,

%T 100,74,47,1316,11,330,299,267,234,200,165,129,92,54,15,10,410,368,

%U 325,281,236,190,27,1296,1247,1197,1146,1094,1041,38,2090,2034,1977,1919,1860,1800,1739,1677,1614

%N 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.

%e a(6) = 3, as a(3) = 6 = n, thus a(6) = 3.

%e 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.

%e a(100) = 25, as a(25) = 100 = n, thus a(100) = 25.

%t 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 *)

%o (MATLAB)

%o function a = A363962( max_n )

%o a = 1;

%o for n = 2:max_n

%o r = find(a == n,1,'last');

%o if ~isempty(r)

%o a(n) = r;

%o else

%o k = a(n-1) - n;

%o if k > 0 && isempty(find(a == k, 1))

%o a(n) = k;

%o else

%o a(n) = a(n-1) * n;

%o end

%o end

%o end

%o end % _Thomas Scheuerle_, Jul 03 2023

%Y Cf. A005132, A340612, A354833, A362332.

%K nonn

%O 1,2

%A _Kelvin Voskuijl_, Jun 29 2023