2017-04-08 61 views
0

我創建了這個collat​​z代碼,當我運行命令'java collat​​z 7'時,我的程序在n達到1時不會終止,而是一直重複序列直到StackOverflowError。任何人都可以指出這裏有什麼問題? THXjava collat​​z代碼不會在達到1時停止

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

這看起來像問題:

 if(n%2==0) 
      collatz(n/2); 
     collatz(n*3+1); 

如果n%2==0它會調用兩個。我認爲它應該是這樣的:

 if(n%2==0) 
      collatz(n/2); 
     else 
      collatz(n*3+1); 

現在它只會調用一次。

+0

@D M謝謝! – rifle123