%I
%S 1,1,1,1,2,3,4,5,6,8,12,18,24,31,39,50,68,91,120,159,211,282,381,505,
%T 665,885,1187,1590,2122,2829,3765,5014,6682,8902,11878,15844,21122,
%U 28150,37536,50067,66763,89009,118631,158171,210939,281334,375129
%N Consider the version of the Collatz or 3x+1 problem where x > x/2 if x is even, x > (3x+1)/2 if x is odd. Define the stopping time of x to be the number of steps needed to reach 1. Sequence gives the number of integers x with stopping time n.
%C The Mathematica function StoppingTime[n] is the length of the Collatz sequence starting at n before hitting 1.
%C I think the offset, examples, formula and code are all off by 1  they all treat the stopping time of 1 to be 1, rather than 0.  David Applegate, Oct 16 2008
%C a(n+1), n >= 0, is the row length of A248573(n,m) (CollatzTerras tree). For the first differences see A131450(n+1), but with A131450(2) = 1 (the number of 2 (mod 3) numbers in row n, for n>= 0, of A248573).  _Wolfdieter Lang_, May 04 2015
%H <a href="/index/3#3x1">Index entries for sequences related to 3x+1 (or Collatz) problem</a>
%F Suppose we have a list L of the numbers with StoppingTime n. Then the list LL of StoppingTime n+1 can be produced as: First. Add to LL all numbers in L multiplied by 2. Second. For the numbers x now in LL, if Mod[x, 3]==1, AppendTo LL the number (x1)/3 (if (x1)/3!=1). These two steps make LL complete.
%e StoppingTime == 1: L = {1}, a(1)= 1. StoppingTime == 2: L = {2}, a(2)= 1. StoppingTime == 3: L = {4}, a(3)= 1. StoppingTime == 4: L = {8}, a(4)= 1. StoppingTime == 5: L = {5, 16}, a(5)= 2. First, LL = {10, 32} ( = 2*L) Second, Mod[10, 3]==1, so we AppendTo LL also (101)/3 == 3. We get LL = {3, 10, 32}. So a(6) == 3.
%t (*** Program #1 ***) For[v = 1, v <= 12, v++, lst = {}; For[n = 1, n < 2^v, n++, If[StoppingTime[n] == v, AppendTo[lst, n]]]; Print[lst]; Print[Length[lst]]; ]
%t (*** Program #2 ***) lst1 = {1}; For[v = 1, v <= 12, v++, L1 = Length[lst1]; Print["Number of numbers with StoppingTime ", v, ": ", L1]; Print["List of numbers: ", lst1]; (* Numbers with StoppingTime n *) Print["Control of StoppingTime: ", Map[StoppingTime, lst1]]; (* Controll *) Print[""]; lst2 = 2 lst1; For[i = 1, i <= L1, i++, x = (lst2[[i]]  1)/3; If[IntegerQ[x] && x != 1, AppendTo[lst2, x]]; ]; lst1 = Sort[lst2]; ]
%t (*** Program #3 ***) lst0 = {}; lst1 = {1}; For[v = 1, v <= 35, v++, L1 = Length[lst1]; AppendTo[lst0, L1]; lst2 = 2 lst1; For[i = 1, i <= L1, i++, x = (lst2[[i]]  1)/3; If[IntegerQ[x], AppendTo[lst2, x]]; ]; lst1 = Complement[lst2, {1}]; ]; lst0
%o #Perl code to calculate terms after a(4): @x=(8,0);for($n=5;$n<=60;$n++){do{$q=2*shift(@x);push(@x,($q1)/3)if($q%3==1);push @x,$q}while $q;print($#x,", ");}  _Carl R. White_, Oct 03 2006
%Y See A005186 for another version. A248573, A131450.
%K nonn
%O 1,5
%A Bo T. Ahlander (ahlboa(AT)isk.kth.se), Mar 29 2001
%E More terms from _Carl R. White_, Oct 03 2006
%E Edited by _N. J. A. Sloane_, Sep 15 2007
