我创建了这个collatz代码,当我运行命令' java collatz 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]));
}
}
答案 0 :(得分:1)
这看起来像问题:
pubdate
如果 if(n%2==0)
collatz(n/2);
collatz(n*3+1);
它将同时调用那些。我认为它应该是这样的:
n%2==0
现在它只会调用一次。