当前位置:首页 > JavaScript

js实现冰雹猜想

2026-04-04 13:35:22JavaScript

冰雹猜想简介

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

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

实现思路

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

js实现冰雹猜想

代码实现

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实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…