使用递归给定m(i)= 1 + 1/2 + 1/3 + 1/4 + 1/5 ... + 1 / i

时间:2014-09-28 22:43:49

标签: java recursion

这是我到目前为止所拥有的。我无法确切地知道如何更改数字,这是有道理的。我是否需要将索引作为等式的一部分?虽然看起来像n1(前一个数字)+(1 / n2)应该给我一个新的n2。有什么想法吗?

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));
 }

}

1 个答案:

答案 0 :(得分: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    

您问题中的公式与此非常相似,可以以类似(递归)的方式呈现。