当前位置:首页 > 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表格展示计算过程:

js实现冰雹猜想

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
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现百叶窗

js实现百叶窗

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