到达1时,java collat​​z代码不会停止

时间:2017-04-08 05:07:11

标签: java jvm collatz

我创建了这个collat​​z代码,当我运行命令' java collat​​z 7'时,我的程序在n达到1时不会终止,而是继续重复序列直到StackOverflowError。谁能指出这里的问题是什么?谢谢

public class collatz{
    public static void collatz(int n){
            System.out.println(n+" ");
            if(n==1)
                    return;
            if(n%2==0)
                    collatz(n/2);
            collatz(n*3+1);
    }
    public static void main(String[] args){
            collatz(Integer.parseInt(args[0]));
    }
}

1 个答案:

答案 0 :(得分:1)

这看起来像问题:

pubdate

如果 if(n%2==0) collatz(n/2); collatz(n*3+1); 它将同时调用那些。我认为它应该是这样的:

n%2==0

现在它只会调用一次。