login
A283165
a(0) = 0; a(1) = 1; a(2*n) = 2*a(n), a(2*n+1) = 2*a(n) + (-1)^a(n+1).
3
0, 1, 2, 3, 4, 3, 6, 7, 8, 7, 6, 7, 12, 11, 14, 15, 16, 15, 14, 15, 12, 11, 14, 15, 24, 23, 22, 23, 28, 27, 30, 31, 32, 31, 30, 31, 28, 27, 30, 31, 24, 23, 22, 23, 28, 27, 30, 31, 48, 47, 46, 47, 44, 43, 46, 47, 56, 55, 54, 55, 60, 59, 62, 63, 64, 63, 62, 63, 60, 59, 62, 63, 56, 55, 54, 55, 60, 59, 62, 63, 48, 47, 46, 47, 44, 43, 46, 47, 56, 55, 54
OFFSET
0,3
EXAMPLE
a(0) = 0;
a(1) = 1;
a(2) = a(2*1) = 2*a(1) = 2;
a(3) = a(2*1+1) = 2*a(1) + (-1)^a(2) = 2*1 + (-1)^2 = 3;
a(4) = a(2*2) = 2*a(2) = 2*2 = 4;
a(5) = a(2*2+1) = 2*a(2) + (-1)^a(3) = 2*2 + (-1)^3 = 3, etc.
MATHEMATICA
a[0] = 0; a[1] = 1; a[n_] := If[EvenQ[n], 2 a[n/2], 2 a[(n - 1)/2] + (-1)^a[(n + 1)/2]]; Table[a[n], {n, 0, 90}]
PROG
(PARI)
a(n) = if (n<2, n, if (n%2==0, 2*a(n/2), 2*a((n-1)/2)+(-1)^(a(n+1)/2)));
tabl(nn)={for (n=0, nn, print1(a(n), ", "); ); };
tabl(90); \\ Indranil Ghosh, Mar 03 2017
(Python)
def a(n):
if n<2: return n
if n%2==0: return 2*a(n//2)
else: return 2*a((n-1)//2)+(-1)**a((n+1)//2) # Indranil Ghosh, Mar 03 2017
CROSSREFS
Cf. A023758 (fixed points), A052499 (records), A080100, A087808.
Sequence in context: A127463 A076618 A116550 * A116991 A330061 A330194
KEYWORD
nonn,changed
AUTHOR
Ilya Gutkovskiy, Mar 02 2017
STATUS
approved