本帖最后由 朱荣宁. 于 2013-3-6 23:50 编辑
对于这道题目 2/1+3/2+5/3+8/5+13/8…..前20项之和我相信很多人都见过,其实这道题的算法思想并不是很难,比如如下代码就可以实现:
class Sum
{
public static void main(Sting[] args)
{
double sum=0;
double fenZi=2.0, fenMu=1.0; //初始的分子 (fenZi)=2,分母(fenMu)=1
for(int i=1; i<=20; i++){
sum += fenZi / fenMu ;
fenMu = fenZi; //下一项的分母 = 上一项的分子
fenZi += fenMu; //下一项的分子 = 上一项的分子加分母
}
System.out.println(“sum= “sum);
}
}
这是一种最容易想到的方法,可是这种方法的空间复杂度和时间复杂度都是不理想的,我本人是初学者,想请教高手,可不可以用递归来实现算法,如果可以,请高手给出可以运行的代码,小女子感激不尽!
|