-
Notifications
You must be signed in to change notification settings - Fork 64
/
Copy pathCollatz.js
41 lines (35 loc) · 1.01 KB
/
Collatz.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*
Description:
Preface
A collatz sequence, starting with a positive integern, is found by repeatedly applying the following function to n until n == 1 :
collatz sequence
n = { n / 2 for even n ;
3n + 1 for odd n }
=======
A more detailed description of the collatz conjecture may be found on Wikipedia.
The Problem
Create a function collatz that returns a collatz sequence string starting with the positive integer argument passed into the function, in the following form:
"X0->X1->...->XN"
Where Xi is each iteration of the sequence and N is the length of the sequence.
Sample Input
collatz(4); // should return "4->2->1"
collatz(3); // should return "3->10->5->16->8->4->2->1"
Don't worry about invalid input. Arguments passed into the function are guaranteed to be valid integers >= 1.
*/
function collatz(n){
let num=[];
for (let i=n;;){
if (i===1){
num.push(i)
break
}
if (i%2===0) {
num.push(i)
i=i/2
} else {
num.push(i)
i=i*3+1
}
}
return num.join('->')
}