有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和

无聊,写个js玩玩. 递归写法

function a(n){
      if(n==1){return 1;}
      else if(n==2){return 2;}
      else{ return a(n-1)+a(n-2);} 
}

function b(n){ return a(n+1)/a(n); }   

function sum(n){
    if(n==0){return 0;} 
     else {return sum(n-1)+ b(n);}  
}

这样就可以了。

关键就是表示这个数列,递归是写数列的最佳方法,但是如果写循环代码来表示数列还是比较麻烦的。

这个数列不是简单的等差数列也不是简单的等比数列。所以用循环代码表示比较难,没有直观的公式。

这个分子分母数列都是1,2,3,5,8,13,21,34,55 。。。,规律就是A(n)=A(n-1)+A(n-2)

数列本身就是B(n)=A(n+1)/A(n).

所以求和就是Sum(n)=sum(n-1)+B(n)

两个递归分解了问题。

发表评论