level 2
因为 a=a++ 这一句,这一句可以拆分成如下步骤:
缓存=a
a++
a=缓存;
实际上 a 并没有变化,每次给 array[a] 赋值的时候都是赋值到同一位置,所以数组里实际上只有一个数。
还有就是你的算法经过更正后会包含 1098 1087 1076 1065 这样的数,经过我的排查是因为有中间某一位为 0 时也可以通过的判断条件,中间包含第 2 位出现 0 时也会判断为符合条件。
你可以参考下我的写法。
var a=[];
for (let n=0;n<10001;n++) {
let temp=n.toString();
let length=temp.length;
if (length<2) continue;
let pass=true;
for (let bit=0;bit+1<length;bit++) {
if (parseInt(temp[bit])-1!=parseInt(temp[bit+1])) {
pass=false;
break;
}
};
if (pass) a.push(n);
};
alert(a);
2020年07月09日 03点07分
