从第3项开始,每一项都等于前两项之和。 我刚开始是这样想的,用一个双层for循环,
//当i=1 j=1 i=2 j=1+1 i=3 j=i+2=5 i=4 j=i+3=7
输出i j 1 1 2 3 5 7 …… 刚开始对上了,但是从7开始就对不上了。
所以换思路:
an=a[n-1]+a[n-2];
如图所示:
z=i+j
每次把i z j整体往后挪动一次,z刚好就是i+j,每挪动一次就输出一次z,
就可以遍历3 5 8 13……一直到100以内的斐波那契。但是我们发现它并没有遍历i和j的位置,也就是1 1
所以我们可以再先把z初始化为1,然后先把z的值打印两次,再进行斐波那契
写如下代码:
var i=1;
var j=1;
var z=1;
var n=0;
while(z<=100)
{
while(n<=1)
{
console.log(z+' ');
n++;
}
z=i+j;
console.log(z+' ');
i=j;
j=z;
}
用js在控制台输出会折叠第二个,以下是相同代码用c和js做对比():
用document可以把折叠的1输出出来:
但是我们发现最后z的值为144,大于100. 所以说需要修改:
这是因为虽然while()循环的条件为z<=100,但是在循环内部有一个z=i+j; cout<<z 所以z还是可能大于100的,所以我们应该再加个条件,如果z<100再cout就可以了:
js 运行结果: