2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
4 回答
十月海洋
TA贡献12条经验 获得超14个赞
递归算法,高效准确,代码如下:
var fun=function(index){ //对前两项进行数值判定 if (index <=2) { return index; } else { return fun(index - 1) + fun(index - 2); } } for (var i = 1; i <= 20; i++) { console.log(fun(i + 1) + '----' + fun(i)); /*输出的结果如下: 2----1 3----2 5----3 8----5 13----8 21----13 34----21 55----34 89----55 */ }
一旦你能够得到每项的数字,算和的话,只需要依次累加就可以了,希望对你有所帮助
阿旭_
TA贡献217条经验 获得超353个赞
设置行变量为i,分子为a,分母为b,观察
行i 分子a 分母b
0 2 1 (所以代码初始化值应该是这三个值)
1 3(2+1) 2
2 5(3+2) 3
3 8 5
4 13 8
double sum = 0;//累加器,求每一项的和 for(int i=0,a=2,b=1;i<20;i++){ sum = sum + 1.0*a/b ;//累加当前分数 /*为下一次累加做准备,即:改变分子分母的值*/ int t = a ;//临时保存分子的值 a = a + b ;//根据规律分子的值为a+b b = t ;//根据规律分母的值应该是分子的值,而分子的值已发生变化所以用之前保存的t来代替即可。 }
慕粉3456840
TA贡献16条经验 获得超4个赞
function addAll(a,b,n)//a 分子 b 分母
{
var total=0,tmp=0;
for(var i=0;i<n;i++)
{
total+=a/b;
tmp=a;
a=a+b;
b=tmp;
}
return total;
}
console.log(addAll(2,1,20));就可以了
添加回答
举报
0/150
提交
取消