当前位置:首页 > JavaScript

js实现冰雹猜想

2026-03-01 12:51:41JavaScript

冰雹猜想简介

冰雹猜想(Collatz Conjecture)是一个数学猜想:对于任意正整数,按照以下规则运算,最终都会收敛到1。

js实现冰雹猜想

  • 若数字为偶数,则除以2
  • 若数字为奇数,则乘以3加1

实现步骤

递归实现

通过递归函数不断处理数字,直到结果为1:

js实现冰雹猜想

function collatzRecursive(n, sequence = []) {
    sequence.push(n);
    if (n === 1) return sequence;
    return collatzRecursive(n % 2 === 0 ? n / 2 : 3 * n + 1, sequence);
}
console.log(collatzRecursive(6)); // 输出 [6, 3, 10, 5, 16, 8, 4, 2, 1]

循环实现

使用循环代替递归,避免栈溢出风险:

function collatzLoop(n) {
    const sequence = [];
    while (n !== 1) {
        sequence.push(n);
        n = n % 2 === 0 ? n / 2 : 3 * n + 1;
    }
    sequence.push(1);
    return sequence;
}
console.log(collatzLoop(7)); // 输出 [7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]

可视化步数

统计达到1所需的步数:

function collatzSteps(n) {
    let steps = 0;
    while (n !== 1) {
        n = n % 2 === 0 ? n / 2 : 3 * n + 1;
        steps++;
    }
    return steps;
}
console.log(collatzSteps(27)); // 输出 111

注意事项

  • 输入需为正整数,否则会导致无限循环。
  • 大数可能超出JavaScript整数范围,需使用BigInt处理。
  • 冰雹猜想尚未被数学证明,但所有测试数均符合规律。

扩展应用

可结合前端图表库(如Chart.js)绘制序列变化曲线,直观展示收敛过程。

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

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现滚动

js实现滚动

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

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…