Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的Collatz猜想_Javascript_Typescript_Collatz - Fatal编程技术网

JavaScript中的Collatz猜想

JavaScript中的Collatz猜想,javascript,typescript,collatz,Javascript,Typescript,Collatz,各位!! 我正在努力为学校解决这个问题。我需要计算从任何正整数到1需要多少步。我应该用打字脚本。 Collatz猜想或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 &am

各位!! 我正在努力为学校解决这个问题。我需要计算从任何正整数到1需要多少步。我应该用打字脚本。 Collatz猜想或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');
    }
}

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

没错。返回的位置不合适。它应该在外面,而不是环路

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');
    }
}

它有用吗?如果是,请考虑张贴。我们在这里只修复代码,不进行审查;)你好不,它不起作用。我需要一个代码修复。我明白了。“返回”不合适。