我在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。
答案 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();