Problem 14

by Tom M

JavaScript

let counter = 0;
let finalResult;
function outer(x) {

  
  let tempCounter = 0;
  
	let result = x;
  let n = x;
	

  function collatz(n) {
    if (n % 2 === 0) {	//if even
      let next = n/2;
      tester(next);
    } else {						//if odd
      let next = (3*n) + 1;
      tester(next);
    }
  }

  function tester(x) {
    if (x === 1) {
    tempCounter += 1;
    if (tempCounter > counter) {
    counter = tempCounter;
    finalResult = result;
    console.log(counter);
    console.log(finalResult);
    }
    } else {
    tempCounter += 1;
    collatz(x);
    }
  }

	collatz(n);
}


for (let i = 1000000; i > 0; i--) {
	outer(i);
}