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
提交
取消
