当前位置:首页 > JavaScript

js实现冰雹猜想

2026-04-04 13:35:22JavaScript

js实现冰雹猜想

冰雹猜想简介

冰雹猜想(Collatz Conjecture)是一个数学问题,对于任意正整数:

js实现冰雹猜想

  • 如果数是偶数,则除以2
  • 如果数是奇数,则乘以3加1
  • 重复上述步骤,最终会得到1

实现思路

使用递归或循环结构实现冰雹猜想的计算过程,记录每一步的变化直到结果为1。

代码实现

function collatzConjecture(n) {
    const sequence = [n];
    while (n !== 1) {
        n = n % 2 === 0 ? n / 2 : n * 3 + 1;
        sequence.push(n);
    }
    return sequence;
}

示例运行

console.log(collatzConjecture(6)); 
// 输出: [6, 3, 10, 5, 16, 8, 4, 2, 1]

优化版本(避免大数溢出)

function collatzConjecture(n) {
    const sequence = [];
    // 使用BigInt处理大整数
    let current = BigInt(n);
    sequence.push(current);
    while (current !== 1n) {
        current = current % 2n === 0n ? current / 2n : current * 3n + 1n;
        sequence.push(current);
    }
    return sequence;
}

可视化实现

function visualizeCollatz(n) {
    const seq = collatzConjecture(n);
    console.log(`Sequence for ${n}:`);
    seq.forEach((num, i) => {
        console.log(`Step ${i+1}: ${num}`);
    });
    console.log(`Total steps: ${seq.length-1}`);
}

注意事项

  • 输入应为正整数
  • 对于极大数值建议使用BigInt
  • 该猜想尚未被数学证明,但所有测试数均符合

标签: 冰雹js
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…