【问题标题】:Understanding While Loops and Counter - How does it work?了解 While 循环和计数器 - 它是如何工作的?
【发布时间】:2021-05-27 18:45:37
【问题描述】:

了解 While 循环

我试图了解当我使用“while 循环”多次执行代码时究竟会发生什么。

我在 JSHero.net 上解决了一个问题,我发现它令人困惑,所以我尝试向自己解释解决方案以便获得清晰的理解。

请研究问题、答案和简单的解释,如果我理解正确,请告诉我。我本可以更好地解释计数器,因为在条件本身中使用它让我很困惑。

提前感谢所有帮助我的好心人!!

注意安全!!

问题

编写一个函数spaces,它接受一个自然数n并返回一个由n个空格组成的字符串。 示例:spaces(1) 应该返回 ' '。

回答

function spaces(num) {
  let mySpaces = '';

  while (num-- > 0)
    mySpaces += ' ';

  return mySpaces;
};

说明

  • 声明一个函数空间
  • 它有 1 个参数 'num'
  • 声明一个变量 mySpaces
  • 用空字符串初始化
  • 我们使用 while 循环,因为我们需要多次重复一个动作
  • 在这种情况下,我们需要在字符串中添加空格
  • 我们的 '''空格字符串''' 将存储在变量 mySpaces 中
  • 空格将等于“num”参数,该参数在调用函数“spaces”时提供
  • while 循环具有:条件和代码(循环体)
  • 我们的条件是保证代码只要num大于0就应该执行
  • 我们的条件是 (num--> 0)
  • 我们的代码是:mySpaces += ''
  • 所以如果我们的函数使用以下参数调用,那么这个 while 循环将如何工作
  • 空格 (3)
  • 首先它会检查 3 > 0;它是什么,它将执行代码
  • mySpaces = mySpaces + ' ';变量 mySpace 中的结果现在将是“”(1 个空格)
  • 那么由于我们使用了 num 作为计数器 (num--),循环将从 3 = 2 减少 1
  • 它会检查 2 > 0;它是什么,它将执行代码
  • mySpaces = mySpaces + ' ';变量 mySpace 中的结果现在将是 ' '(2 个空格)
  • 那么由于我们使用了 num 作为计数器 (num--),循环将从 2 = 1 减少 1
  • 它会检查 1 > 0;它是什么,它将执行代码
  • mySpaces = mySpaces + ' ';变量 mySpace 中的结果现在将是 ' '(3 个空格)
  • 那么由于我们使用了 num 作为计数器 (num--),循环将从 1 = 0 减少 1
  • 它会检查 0 > 0;它不是,它只会在while循环之后执行代码
  • 我们返回 mySpaces 变量,这将为我们提供最终结果

【问题讨论】:

  • 实际上它就像“首先它会检查是否 3 > 0;(它是)然后它将 num 减一,然后它会执行代码”。

标签: javascript


【解决方案1】:

虽然 javascript 和最流行的编程语言中的构造由以下部分组成:

  1. while关键字
  2. 括号内的条件 (num-- > 0)
  3. 正文 (mySpaces += ' ';)

只要条件为真,它就会在体内重复执行语句。

例如,您将如何重复打印Hello world 5 次(请注意,对于此示例,for 循环会更合适):

i = 5;
while (i > 0) {                  // as long as i is above zero
    console.log("Hello world");  // print 'Hello world'
    i--;                         // decrease value of i by one
}

在这个特殊的例子中,while循环的执行可以这样描述:

  • 检查条件是否为真
    • 如果不是 - 跳过正文并在正文之后继续下一条语句
    • 如果是 - 执行正文中的每个语句一次并重复此步骤

根据 body 被执行 0 次、1 次或多次的条件是可能的。

在您的代码中,您从 num 的某个值开始,当您进入 while 循环时,会检查条件,确定是否应该执行主体,然后将 num 减一(因为-- 运算符)。只要num 大于零,此过程就会重复。

【讨论】:

  • 谢谢塞缪尔!!
【解决方案2】:

对顺序稍作修改:

... 空格 (3)

变量mySpaces 将被声明并使用空字符串字面量进行初始化。

首先它会检查 3 > 0;它是什么,它开始循环。 num 的值在内存中已经减1,所以现在num = 2。

mySpaces = mySpaces + ' ';变量 mySpace 中的结果现在将是 ' '(1 个空格)

它将检查 2 > 0;它是什么,它将执行代码。 num 的值在内存中再次减 1,所以现在 num = 1。

mySpaces = mySpaces + ' ';变量 mySpace 中的结果现在将是 ' '(2 个空格)

它将检查 1 > 0;它是什么,它将执行代码。 num 的值在内存中再次减 1,所以现在 num = 0。

mySpaces = mySpaces + ' ';变量 mySpace 中的结果现在将是 ' '(3 个空格)

它将检查 0 > 0;这是错误的,它将不再执行 while 循环内的代码。 num 的值在内存中再次减 1,所以现在 num = -1。

函数返回mySpaces的最后一个值,即''(3个空格)。

附:我试图以最接近您解释的方式编写答案。希望这能清除一切!下次如果您发现代码流混乱,请记住将打印语句放在不同的位置。将console.log("Checkpoint 1") 或打印变量的值在行动中极大地帮助人们理解发生的变化。更高级的方法是在代码中放置断点并进行调试。 OnlineGDB 的 IDE 为变量制作了一个值表,并在每个站点显示它们。

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 2016-04-20
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    相关资源
    最近更新 更多