【问题标题】:Print number patterns in JavaScript在 JavaScript 中打印数字模式
【发布时间】:2020-11-05 06:41:14
【问题描述】:

我想以如下模式打印数字,我还需要仅使用一个 for 循环而不是 for 循环内的 if 条件来打印。

如果我给s = 7,输出模式将是7, 5, 3, 1, 3, 5, 7

如果s=6 则输出为6, 4, 2, 4, 6

这是我尝试过的,但没有成功。

const s = 7, b = 2

for (x = s, d = b; x > 0 && x <= 7; x -= 2) {
  console.log(x)
}

我不想使用任何预构建的库来实现这一点,例如Math.abs()

【问题讨论】:

  • 仅供参考,这将创建一个全局 xd 变量
  • 什么都好
  • 您可以反转输出数组并合并。这可以接受吗?
  • 这里不允许使用数组,只能用于带有一些数学运算的循环,如果条件正确则需要反转它,这也是不允许的
  • 接受的答案不符合您在此评论上方声明的要求:“如果条件正确,您需要反转它,这也是不允许的” - 这正是代码step = x + step &lt;= 0 ? -step : step,正在做。

标签: javascript algorithm logic


【解决方案1】:

使用三元运算符:

const s = 10, b = 2

for (x = s, step = -b; x <= s; step = x + step <= 0 ? -step : step, x += step) {
  console.log(x)
}

【讨论】:

  • 你能不能也为Java写同样的东西
  • 没有数学课能写吗
  • @AmalaAmala 在Java中基本相同。
  • @marace 我需要没有数学类和此类预建库的帮助
  • 使用三元运算符会不会和使用if一样?
【解决方案2】:

var s = 7, b = 2, x, d;
var front = " ", back = " ";

for (x = s, d = b; x - b > 0 ; x -= b) {
    front = front + " " + x; 
    back = x + " " + back;
}
console.log(front + " " + x + " " + back);

【讨论】:

  • 好主意,但如果你让它运行,它将打印 7、5、3、1、1、3、5、7(两个 1)。
  • No 1 不应该重复
  • @AmalaAmala:这个怎么样?
  • 为什么会有字符串
  • @AmalaAmala:这是一个有趣的问题,但您对问题的条款进行了太多更改。您应该在问题本身中一次发布所有条件。
【解决方案3】:

这适用于偶数和奇数:

const s = 8, b = 2

for (x=s,step = b; x <=s ; (x===1 || x===2) ? (step = -b, x = x-step ): x= x-step) {
    console.log(x)
}

我所做的是,在递增/递减块中,当 x 等于 1 (奇数)或 x 等于 2 (偶数)时,步长从正变为负。

按升序打印数字:

const s = 10

for ( x=0,step=1; x!== -1 ; x===s ? (step = -1, x = x+step): x= x+step) {
    console.log(x)
}

【讨论】:

  • 你也可以按升序打印吗?
  • 有可能。你能分享一个你期望的示例输出吗?
  • 如果 s = 10,输出 0,1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3, 2,1,0
  • const s = 10, b = 2 for ( x=0,step=1; x!== -1 ; x===s ? (step = -1, x = x+step): x= x+step) { console.log(x) }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 2016-05-17
相关资源
最近更新 更多