当前位置:首页 > JavaScript

js实现冰雹猜想

2026-03-01 12:51:41JavaScript

冰雹猜想简介

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

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

实现步骤

递归实现

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

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所需的步数:

js实现冰雹猜想

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实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现原理

js实现原理

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

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…

js 实现全屏

js 实现全屏

使用 requestFullscreen 方法 通过调用元素的 requestFullscreen 方法可以实现全屏。该方法兼容现代浏览器,但不同浏览器可能需要前缀。 const element =…