斐波那契:前两项之和等于第三项
0 1 1 2 3 5 8 13 …
使用迭代器
function *difficult(count=10){
var num=0;
var pre1=0;
var pre2=0;
if(num<count){
if(num==0){
pre1=1;
num++;
yield 0
}
while(true){
num++;
let result=pre1+pre2;
pre2=pre1
pre1=result;
yield result
if(num>=count){
break;
}
}
}
}
var diffAterator=difficult()
console.log(diffAterator)
for(let i of diffAterator){
console.log(i)
}
结果
<mark>这里,使用原生代码,实现迭代器效果</mark>
function createInterator(count = 10) {
var num = 0;
return {
pre1: 0,
pre2: 0,
next: function() {
if (num > count) {
return {
done: true,
value: undefined
}
}
if (num == 0) {
this.pre1 = 1;
num++;
return {
//done代表事情做完了没有
done: false,
value: 0
}
} else {
num++;
result = this.pre1 + this.pre2;
this.pre2 = this.pre1;
this.pre1 = result
return{
done:false,
value:result
}
}
}
}
}
var a = createInterator();
效果: