while(n--> 1)是什么意思?

时间:2019-03-20 04:31:03

标签: javascript

我在leetcode中看到了question

此外,我在其中找到了解决方法。

我不明白的是这一行代码

 while(n-- >1)

有人可以解释->含义吗? 这是JS:

 var countAndSay = function(n) {
    var result = "1";

    var prev;
    var count;
    var tmp;

    while (n-- > 1) {
        prev = result[0];
        count = 1;
        tmp = [];
        for (var i = 1; i < result.length; i++) {
            if (prev === result[i]) {
                count++;
            } else {
                tmp.push(count, prev);
                prev = result[i];
                count = 1;
            }
         }
    
         tmp.push(count, prev);
         result = tmp.join("");
       }

    return result;
     };
    console.log(countAndSay(4))

最后一件事,有人可以解释这个问题的含义吗。

我仍然不明白为什么2是11,3是21,4是1211而5是111221。

4 个答案:

答案 0 :(得分:4)

表达式

n-- > 1

表示:从n中减去1,并检查其减法值之前是否大于1。

while (n-- > 1) {
  // rest of the code

等同于

while (true) {
  if (n > 1) {
    n--;
    // rest of the code
  } else {
    // n is decremented regardless:
    n--;
    // initial condition was not fulfilled:
    break;
  }

或者,在条件否定的情况下:

while (true) {
  const origN = n;
  n--;
  if (!(origN > 1)) {
    break;
  }
  // rest of the code

答案 1 :(得分:0)

这意味着您要检查n是否大于1,然后再将n减1。

答案 2 :(得分:0)

这意味着从n中减去1,然后检查结果是否大于1。

n--在代码的任何部分都等效于n = n - 1或“ n-= 1”,在这种循环中,这是一种简化的减法和求值方法。

答案 3 :(得分:0)

表达式(n-- > 1)与比较n的值大于1相似。但是您必须注意的 n的值在此处进行比较时减少(开始时)。这是因为首先将n的值与1进行比较,然后才将n的值减小。为了清楚地理解这一点,您可以看一下。

function test(name) {
  var n = 5;
  while (n-- == 5) { //Here the decrement doesn't takes places so it gets inside the block
    console.log(n); //This statement returns the value of n as 4.
  }
}
const testing = new test();