2014-09-28 178 views
-1

這是我迄今爲止。我無法確切地知道如何更改數字,所以它很有意義。我是否需要將索引作爲等式的一部分?雖然看起來像n1(前面的數字)+(1/n2)應該給我一個新的n2。有什麼想法嗎?使用遞歸給定m(i)= 1 + 1/2 + 1/3 + 1/4 + 1/5 ... + 1/i

package myrecursivemethod; 

public class MyRecursiveMethod { 

private static double index = 0; 
private static double stoppingPoint=10; 

    public static void main(String[] args) { 
    double n1= 0; 
    double n2= 1; 
    System.out.println("index: " + index + "->" + n1); 
    myRecursiveMethod(n1, n2); 

} 
public static void myRecursiveMethod(double n1, double n2) 
{ 
    System.out.println("index: " + index + " -> " + (n1+(1/n2))); 

    if (index == stoppingPoint) 
     return; 
    index ++; 

    myRecursiveMethod(n2, n1+(1/n2)); 
} 

} 
+0

嘗試打印出所有的變量,然後考慮是否真的看起來是正確的。 – 2014-09-28 22:46:21

+1

儘量不要在方法中使用任何靜態(或非靜態)字段。這個任務可以用只有一個參數的方法完成,比如'double m(double i)'。試着按照這種方式來看公式,即m(4)=(1 + 1/2 + 1/3)+ 1/4,這意味着m(4)= m(3)+ 1/i。現在嘗試概括它。 – Pshemo 2014-09-28 22:59:38

+0

@Pshemo我會把它變成一個答案,一些觀衆不讀評論 – DreadHeadedDeveloper 2014-09-28 23:01:21

回答

2

你需要看看你的公式有點接近,並試圖找到一種方式來呈現使用類似的公式使用不同的參數這個公式。例如

sum(i) = 1 + 2 + 3 + 4 + ... + (i-1) + i 

是相同

sum(i) = (1 + 2 + 3 + 4 + ... + (i-1)) + i 

但由於

1 + 2 + 3 + 4 + ... + (i-1) = sum(i-1) 

我們可以重寫整個公式

sum(i) = sum(i-1) + i 

(或實際上)

  { sum(i-1) + i  if i>0 
sum(i) = { 
     { 0    if i==0  

您的問題的公式與這個公式非常相似,可以用類似的遞歸方式呈現。