2014-09-28 52 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  

您的问题的公式与这个公式非常相似,可以用类似的递归方式呈现。

相关问题