Một nhà toán học Ulam đã đề xuất tạo một dãy số từ bất kỳ số nguyên dương n (n> 0) nào như sau -
Nếu n là 1, nó sẽ dừng lại. nếu n chẵn, số tiếp theo là n / 2. nếu n lẻ, số tiếp theo là 3 * n + 1. tiếp tục quá trình cho đến khi đạt đến 1.Dưới đây là một số ví dụ cho một số số nguyên đầu tiên -
2-> 13-> 10-> 5-> 16-> 8-> 4-> 2-> 14-> 2-> 16-> 3-> 10-> 5-> 16-> 8-> 4-> 2-> 17-> 22-> 11-> 34-> 17-> 52-> 26-> 13-> 40-> 20-> 10-> 5-> 16-> 8-> 4 -> 2-> 1Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào một số và trả về chuỗi Ulam bắt đầu bằng số đó.
Ví dụ
Mã cho điều này sẽ là -
const num =7; const createUlam =num => {const res =[num]; if (num &&num ===Math.abs (num) &&isFinite (num)) {while (num! ==1) {if (num% 2) {num =3 * num + 1} else {num / =2; }; res.push (num); }; } else {return false; }; return res;}; console.log (createUlam (num)); console.log (createUlam (3));Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
[7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1] [3, 10, 5, 16, 8, 4 , 2, 1]