有一分数序列: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)
两个递归分解了问题。