如何在 JavaScript 中生成乌拉姆数列?

javascriptweb developmentfront end technologyobject oriented programming

数学家乌拉姆提出从任意正整数 n(n>0)生成一个数字序列,如下所示 −

如果 n 为 1,则停止。
如果 n 为偶数,则下一个数字为 n/2。
如果 n 为奇数,则下一个数字为 3 * n + 1。
继续该过程,直到达到 1。

以下是前几个整数 − 的一些示例

2->1
3->10->5->16->8->4->2->1
4->2->1
6->3->10->5->16->8->4->2->1
7->22->11->34->17->52->26->13->40->20->10->5->16->8->4->2->1

我们需要编写一个 JavaScript 函数,该函数接受一个数字并返回以该数字开头的 Ulam 序列。

示例

其代码为 −

const num = 7;
const generateUlam = 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(generateUlam(num));
console.log(generateUlam(3));

输出

控制台中的输出将是 −

[
   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
]

相关文章