2

By definition of Collatz Conjecture or $3n+1$, regardless of the sequence (ie.$ m1,m2,m3....mn$), at the end, it eventually produces 1 at the end. For example, if you let $m=10$ (ie. $10, 5, 16, 8, 4, 2, 1, 4, 2, 1...$), you must repeat 6 times and eventually reach to 1.

How can Module

Collatz[m_]:= Module[{...}]  

be used that takes positive integer $m$ and outputs the "number of times" that the procedure must be repeated until obtaining 1?

Side Note: Although the link does incorporate the Module function, It's not about longest [Collatz] chain.

mastud89
  • 309
  • 1
  • 7
  • 2
    It can be done as a straightforward loop. Not necessarily the best way, but reasonably effective. Collatz[m_] := Module[{j = 0, m1 = m}, While[m1 =!= 1, j++; m1 = If[OddQ[m1], 3*m1 + 1, m1/2]]; j] – Daniel Lichtblau Apr 02 '18 at 22:11

1 Answers1

6

Recursion comes in handy here:

Collatz[m_] := Collatz[m] = 1 + If[EvenQ[m], Collatz[m/2], Collatz[3 m + 1]];
Collatz[1] := 0;
Collatz[10] 
(* 6 *)
Henrik Schumacher
  • 106,770
  • 7
  • 179
  • 309
A.G.
  • 4,362
  • 13
  • 18