2011-12-05 122 views
1

我一定是沒有圍繞試圖在遞歸方法中存儲一個值的概念。使用迭代解決這個問題需要幾秒鐘,但我正在爲遞歸調用而掙扎。基本上我試圖解決:1/1 + 1/2 + 1/3 ...使用遞歸來計算一系列

public static void main(String[] args) { 

    Scanner input = new Scanner(System.in);  

    System.out.print("Enter in the end number for the sequence: "); 
    int endpoint = input.nextInt(); 

    System.out.println("The value of the sequence is : " + calcSequence(endpoint)); 

    } 

    public static double calcSequence (int index){ 

     if (index == 0) 
      return 0; 
     else 
      return (1/index) + calcSequence(index - 1); 
    } 

回答

6

您需要添加一些明確的類型轉換。您的1/index正在執行整數除法,並且您的通話正在失去其所有精度。只需將其更改爲1.0/index(或1d/index以指示應使用1作爲double)即可獲得您要查找的內容。

+1

我知道這是愚蠢的。我爆發了筆和紙,似乎在邏輯上合理。 – MISMajorDeveloperAnyways