当前位置:首页 > JavaScript

js实现冰雹猜想

2026-01-30 21:45:58JavaScript

冰雹猜想简介

冰雹猜想(Collatz Conjecture)是一个数学猜想:对于任意正整数,若为偶数则除以2,若为奇数则乘3加1,最终都会收敛到1。以下是JavaScript实现方法:

js实现冰雹猜想

实现代码

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

代码说明

  • 函数接受一个正整数n作为输入
  • 使用数组sequence记录每一步的计算结果
  • 循环条件为n不等于1时持续计算
  • 三元运算符判断奇偶性:偶数时n/2,奇数时n*3+1
  • 最终返回完整的计算序列

示例用法

console.log(hailstoneSequence(6)); 
// 输出: [6, 3, 10, 5, 16, 8, 4, 2, 1]
console.log(hailstoneSequence(11));
// 输出: [11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]

可视化实现

可通过以下代码生成HTML表格展示计算过程:

function displayHailstone(n) {
    const seq = hailstoneSequence(n);
    let html = `<table border="1"><tr><th>Step</th><th>Value</th></tr>`;
    seq.forEach((val, idx) => {
        html += `<tr><td>${idx+1}</td><td>${val}</td></tr>`;
    });
    html += `</table>`;
    document.body.innerHTML = html;
}

性能优化

对于大数计算可添加最大迭代次数限制:

function hailstoneWithLimit(n, maxIterations = 1000) {
    const sequence = [n];
    let iterations = 0;
    while (n !== 1 && iterations < maxIterations) {
        n = n % 2 === 0 ? n / 2 : n * 3 + 1;
        sequence.push(n);
        iterations++;
    }
    return sequence;
}

js实现冰雹猜想

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

相关文章

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 fun…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到…