当前位置:首页 > 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
分享给朋友:

相关文章

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js防抖和节流实现

js防抖和节流实现

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

js实现变形

js实现变形

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

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…