当前位置:首页 > JavaScript

js实现冰雹猜想

2026-01-30 21:45:58JavaScript

冰雹猜想简介

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

实现代码

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;
}

性能优化

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

js实现冰雹猜想

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实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现防洪

js实现防洪

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

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…

js实现上传图片预览

js实现上传图片预览

使用FileReader实现图片预览 通过FileReader对象读取用户选择的图片文件,并将其显示在页面上。这种方法适用于现代浏览器。 // HTML部分 <input type="file…

vue js实现登录

vue js实现登录

Vue.js 登录功能实现 依赖安装 确保项目已安装 Vue.js 和必要的依赖库(如 Vue Router、Axios)。通过以下命令安装: npm install vue-router axio…