我要做的只是返回指定范围内的每三个奇数。
这对我来说有点奇怪,我尝试了一些不同的东西,但没有任何值得发布的东西,因为我的尝试没有产生接近我想要的结果,我觉得它超出了我目前的能力范围,任何帮助将不胜感激。提前致谢。
我要做的只是返回指定范围内的每三个奇数。
这对我来说有点奇怪,我尝试了一些不同的东西,但没有任何值得发布的东西,因为我的尝试没有产生接近我想要的结果,我觉得它超出了我目前的能力范围,任何帮助将不胜感激。提前致谢。
尝试
<script>
var range = 100;
var j = -1;
for (i = 0; i <= range; i++) {
if (i % 2 == 1) {
j++;
if (j % 3 == 0) {
alert(i);
}
}
}
</script>
我会避免给你一个直接的代码答案。(钓鱼>吃鱼)。
当您对一组具有相似因子的数字感兴趣时,一个好的经验法则是使用模运算符 (%)。(我不知道这在形式上是否正确,但这是我的想法)。
因此,如果您想要所有偶数,您可以这样做:
for (var i = 0; i < range; i++) {
if (i % 2 == 0) print i;
}
如果你只想要每秒偶数,你能看到如何添加一个计数器吗?最后,你能看到如何改变它,让你每三个奇数得到一个吗?
您可以使用数组并过滤:
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
.filter(
function(a){
this.x += !!(a%2) ? 1 : 0;
return !!(a%3) && !!!(this.x%3);
}, {x:0});
//=> [5, 11, 17]
首先通过模 2 找出范围中的第一个数字是奇数还是偶数。
function getEveryThirdOdd(lowerBound, upperBound) {
var x = (lowerBound+1)%2;
var list = [];
var k = 0;
for(var i = lowerBound+x; i<=upperBound; i=i+6) {
list[k] = i;
k++;
}
return list;
}
此方法返回从 lowerBound 开始的每三个奇数(不是从零开始的每三个)。如您所见,下部和上部都包含在内。如果 lowerBound 是偶数,则与 2 的模运算将为零。这就是为什么我首先将 1 添加到下界。使其(偶数+1)=奇数。奇数模 2 等于 1,因此从 lowerBound+1 开始:
for(var i = lowerBound+x; ...)