javascript - Collat​​z 序列长度

标签 javascript debugging collatz

我正在尝试找到最长的 Collatz小于 100 的数字的序列,但有一个我找不到的错误,导致我的代码崩溃:

var longest=0; //holds the biggest m
var m=0; //count of steps for at given n

//in the following, the counter var starts the sequence by giving it's
//value to n, then n loops the sequence. When loop finishes as n == 1, new 
//number is looped (n = counter++)

for(var counter = 2; counter <100; counter++){
var n = counter;
while(n!= 1){   //when n==1, loop should stop

            if(n%2 == 0){
                n = even(n);
                m++;
            }
                if(n%2 != 0){   
                n = odd(n);
                m++ ;
            }               
        }   

    if(m>longest){
        longest = m;
    }
    m = 0; // resets m counter of steps in loop for new number to loop
}
function even(k){
    return k/2;
}
function odd(k){
    return 3*k+1;
}

为什么我的代码崩溃了?

最佳答案

您应该考虑在 while 循环内使用 n 而不是 counter,并且还需要使用 if-else 而不是 if-if .

        if(n%2 == 0){
            n = even(n);
            m++;
        }
        else{ 
            n = odd(n);
            m++ ;
        }  

因为在 while 循环中改变的是 n 而不是计数器。您基本上是在 while 循环之前重置 n 的值。所以你应该检查n的运行值。

Collat​​z 序列只是在每个步骤中根据其奇偶性执行操作。

关于javascript - Collat​​z 序列长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45926252/

相关文章:

java - 我的 "Collatz conjecture"有什么问题吗?

javascript - 覆盖 jquery 验证消息

每个 html 跨度的 Javascript 倒计时器

visual-studio - 在 Visual Studio 中卸载/重新加载符号/pdb

java - Eclipse调试Android时如何查看异常详情?

lisp - 尾递归Collat​​z猜想为什么会导致Scheme中的栈溢出?

javascript - Webpack 4 是树摇动 Bootstrap ,我该如何防止这种情况?

javascript - Nodejs Mongo 结果与复制的结果不同

visual-studio-2008 - 如何防止 Server 2008 R2 开发箱上出现 "... has stopped working"窗口?

java - Collat​​z 猜想方法 - Java