js实现冰雹猜想
冰雹猜想简介
冰雹猜想(Collatz Conjecture)是一个数学问题,对于任意正整数:
- 如果数是偶数,则除以2
- 如果数是奇数,则乘以3加1
- 重复上述步骤,最终会得到1
实现思路
使用递归或循环结构实现冰雹猜想的计算过程,记录每一步的变化直到结果为1。

代码实现
function collatzConjecture(n) {
const sequence = [n];
while (n !== 1) {
n = n % 2 === 0 ? n / 2 : n * 3 + 1;
sequence.push(n);
}
return sequence;
}
示例运行
console.log(collatzConjecture(6));
// 输出: [6, 3, 10, 5, 16, 8, 4, 2, 1]
优化版本(避免大数溢出)
function collatzConjecture(n) {
const sequence = [];
// 使用BigInt处理大整数
let current = BigInt(n);
sequence.push(current);
while (current !== 1n) {
current = current % 2n === 0n ? current / 2n : current * 3n + 1n;
sequence.push(current);
}
return sequence;
}
可视化实现
function visualizeCollatz(n) {
const seq = collatzConjecture(n);
console.log(`Sequence for ${n}:`);
seq.forEach((num, i) => {
console.log(`Step ${i+1}: ${num}`);
});
console.log(`Total steps: ${seq.length-1}`);
}
注意事项
- 输入应为正整数
- 对于极大数值建议使用BigInt
- 该猜想尚未被数学证明,但所有测试数均符合






