当前位置:首页 > 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所需的步数:

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

相关文章

css3结合js制作

css3结合js制作

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

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaS…

js实现变形

js实现变形

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

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…