【问题标题】:Iterating a given sequence [closed]迭代给定的序列[关闭]
【发布时间】:2014-04-04 15:37:14
【问题描述】:

我需要遍历从 1 到 96 的数字,跳过一些值:

2, 4, 5, 7, 10, 12, 13, 15, 18, 20, ..., 81, 83, 86, 88, 89, 91, 94, 96

我尝试了各种循环,但它们都完全失败了,虽然我已经尝试过,但从我的角度来看,它们真的不值得一看。

感谢任何指导。

由于抱怨和困惑,他们的整个模式应该是 2,4,5,7,10,12,13,15, 17,19,22,24,25,27,30,32, 34,36,37,39,42,44,45,47, 49,51,54,56,57,59,62,64, 66,68,69,71,74,76,77,79, 81,83,86,88,89,91,94,96.

再次感谢! :)

【问题讨论】:

  • 没有得到你的问题吗?
  • 好的,那么两个偶数、两个赔率、两个偶数等等?
  • “我需要遍历数字 1>96” - 请不要在编程网站上使用大于号来表示“最多”;)
  • Read this. 在纸上写下步骤,想一想,写下每一步的结果。编写一个简单的步骤示例。使用调试器完成每个步骤。将其与您的书面笔记进行比较。如果在某个步骤上有所不同,那就是要修复的错误。
  • 你明白提供模式是你的任务吗?如果您自己不想被帮助,您为什么认为 SO 用户应该浪费时间来帮助您?

标签: javascript for-loop


【解决方案1】:

这行得通(即使它不是我写过的最漂亮的代码):

    var even = true;
    var cpt = 0;
    var s = '';
    var i = 1;
    while (i <= 96){
        if (even){
            if (i%2 == 0){
                s += i + ',';
                cpt++;
            }
            if (cpt == 2){
                even = !even;
                cpt = 0;
            }
        }else{//odd             
            if (i%2 == 1){
                s += i + ',';
                cpt++;
            }
            if (cpt == 2){
                even = !even;
                cpt = 0;
                i++;
            }
        }
        i++;
    }
    alert(s);

返回:

2,4,5,7,10,12,13,15,18,20,21,23,26,28,29,31,34,36,37,39,42,44,45,47,50,52,53,55,58,60,61,63,66,68,69,71,74,76,77,79,82,84,85,87,90,92,93,95,

结果和结尾不完全相同,但尊重开头的行为

【讨论】:

  • 哇,这么简单的任务有很多代码。 )
  • 是的,就像我说的。但是,与“魔术”公式或代码行相比,与详细的程序一起使用可能更容易理解它是如何工作的。
  • 不,你应该简化算法。 ) 不要尝试在每一步检查数字是偶数还是奇数,而是查看有一系列数字对,它们之间的距离是 1 或 3。)
  • 是的,你是对的。我们还可以看到它是 2+2+1+2+3+2+1+2+3+2+1+2+3+2+1+2+3+... 并用它创建字符串。但这很神奇,你不这么认为吗?
【解决方案2】:

一种可能的方法:

for (var i = 2; i < 96; i++) {
  console.log(i);
  console.log(i+=2);
  i & 1  &&  (i+=2);
}

...但这将以93, 95 结束,因为您实际上没有检查该序列应该如何结束。提示:不是94, 96

【讨论】:

    【解决方案3】:
    for (var i=1; i < 49; i++)
      console.log(2 * i - Math.floor((i - 1) % 4 / 2));
    

    这显示 2 * i,按此序列 [0, 0, 1, 1, 0, 0, 1, 1,...] 减去零或一

    【讨论】:

      猜你喜欢
      • 2021-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 2013-03-03
      相关资源
      最近更新 更多