js实现冰雹猜想
冰雹猜想简介
冰雹猜想(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;
}
性能优化
对于大数计算可添加最大迭代次数限制:
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;
}







