有人能为我解释这个剩余部分吗?

时间:2016-12-21 00:35:14

标签: javascript function

我正在努力理解if ((x + y) % 2 == 0) ...我无法理解它背后的逻辑。

var drawTable = "";
var size = 8;

for (x = 1; x <= size; x++) {
    for (y = 1; y <= size; y++) {
        if ((x + y) % 2 == 0) {
            drawTable += " ";
        } else {
            drawTable += "#";
        }
    }
    drawTable += "\n"
}

console.log(drawTable);

谢谢,

Kaue Pacheco

5 个答案:

答案 0 :(得分:1)

if ((x + y) % 2 == 0)if (x + y) is an even number相同。

答案 1 :(得分:1)

((x + y) % 2 == 0)仅在x+y为偶数时才为真,否则为假。 如果为true,则会添加空格,否则会添加#符号。

答案 2 :(得分:1)

显示x和y的总和是否为偶数。如果x = 1且y = 3,则x + y将为4,并且将分割4。如果它有一个0余数(就像数字4那样),它是一个偶数。否则,这是一个奇数。

如果您的余数为零,您的代码将仅执行((x + y)%2 == 0)的if条件内的内容。希望这有助于^ _ ^

答案 3 :(得分:0)

正如所有其他答案所述,如果#include <stdio.h> #include <stdbool.h> bool online(int size, int r, int c){ if(size < 1) return false; int last = size-1; if((r == 0 || r == last) && (0 <= c && c <= last)) return true; if((c == 0 || c == last) && (0 <= r && r <= last)) return true; return online(size-4, r-2, c-2); } int main(void){ int t, n, size; scanf("%d", &t); while(t--){ scanf("%d", &n); size = 4*n-3;//1 + 4*(size-1); for(int r = 0; r < size; ++r){ for(int c = 0; c < size; ++c){ if(online(size, r, c)) putchar('*'); else putchar(' '); } putchar('\n'); } putchar('\n'); } } 是偶数,它会打印出一个空格,如果它是奇数,它会打印出一个&#39;#&#39;。这似乎是创建一个棋盘图案。由于你将从x = 1和y = 1开始,第一行将以空格开始(因为x + y是偶数),然后是&#39;#&#39;,后跟一个空格。 ..直到y为9.然后将退出内部for循环并开始一个新行。在这个新行上,x将从2开始,y从1开​​始,所以#&#39;#&#39;将被打印(因为x + y是奇数),然后是空格,然后是......直到y再次为8。然后将启动一个新行,这将继续直到x为9.此时将打印出一个棋盘格。

答案 4 :(得分:0)

if((x + y)%2 == 0)如果你想进一步解释这个。

模数&#39; %&#39;用于获得除法的其余部分。

如果你有例如:

5 % 2 = ?

在这种情况下,它会将5除以2.现在答案将是remainder,而不是quotient

所以答案是:

5 % 2 = 1

你会知道它是even还是odd,因为你将5除以2,其余的将通过将它与{{1}进行比较来区分它是偶数还是奇数}。显然,所有等于 0 的都是偶数