JavaScript 中的 Collat​​z 猜想

问题描述

大家! 我正在努力为学校解决这个问题。我需要计算从任何正整数到 1 需要多少步。我应该使用 TypeScript。 Collat​​z 猜想或 3x+1 问题可以总结如下: 取任何正整数 n。如果 n 是偶数,则将 n 除以 2 得到 n / 2。如果 n 是奇数,则将 n 乘以 3 并加 1 得到 3n + 1。无限重复该过程。该猜想表明,无论您从哪个数字开始,最终都会达到 1。 这是我对代码的猜测:

function steps(n: number) {
    let counter: number = 0;
    if (n > 0 && Number.isInteger(n)) {
        while (n !== 1) {
            if (n % 2 === 0) {                                      
                n = n / 2; 
                counter++;
            } else if (n % 2 !== 0) {
                n = (n * 3) + 1;
                counter++;
            }
            return counter;
        }
    } else {
        throw new Error('Only positive whole numbers are allowed');
    }
}

我希望我的代码尽可能透明,这就是为什么我可能会编写过多的代码。别介意。

解决方法

没错。返回是不合适的。它应该在while循环之外。

function steps(n: number) {
    let counter: number = 0;
    if (n > 0 && Number.isInteger(n)) {
        while (n !== 1) {
            if (n % 2 === 0) {                                      
                n = n / 2; 
                counter++;
            } else if (n % 2 !== 0) {
                n = (n * 3) + 1;
                counter++;
            }
        }
        return counter;
    } else {
        throw new Error('Only positive numbers are allowed');
    }
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...