题目要求如题。
public class TestSum {
public static void main(String args[]) {
System.out.println(getSum(2,1,20));
}
public static double getSum(double molecular ,double denominator,int limit){
if(limit ==1){
return molecular/denominator;
}else{
double sum = molecular/denominator;
double tmp1 = molecular;
double tmp2 = molecular+denominator;
limit--;
return sum += getSum(tmp2,tmp1,limit);
}
}
}
注意点:
1、getSum的参数,前两个中的一个需要用double类型。如果两个都是int类型,经过“/”的运算,那么结果将会出错。如:3/2 =1,而不会是1.5
2、limit--。不能在将其直接写在getSum的函数中。如getSum(tmp2,tmp1,limit--),否则将会出现java.lang.StackOverflowError的异常。limit的值不会发生变化。可以写成
getSum(tmp2,tmp1,limit-1)