form.submit()
我可以添加一个条件来使事情每两个循环发生一次,但是如何为每个第四个循环创建一个条件?
答案 0 :(得分:9)
if (count % 4 == 0) {
// Stuff
}
关键是每个 n 循环都是使用mod n == 0
完成任何 n 。 (严格来说,你可以测试任何小于 n 的数字,但0很方便,因为它的总是小于 n ,对于任何自然数 n 。)
此外,您只需要一个计数器用于任何数量的此类操作,因为计数器会独立于所有这些操作递增。
您甚至可以使用无条件for循环,如下所示:
for (int count = 0; true; count++) {
if (count % 2 == 0) {
// Stuff every other loop
}
if (count % 4 == 0) {
// Stuff every fourth loop
}
}
它会不时地悄悄地溢出,但是它不会对2的幂模数产生任何真正的影响。但如果你想每隔五个循环做一些事情,你就会得到奇怪的故障每次翻身。要修复 ,找到您使用的各种间隔的最小公倍数(对于所有可能的间隔,最多12,27720就可以了)并使用如下:
while (true) {
for (int count = 0; count < 27720; count++) {
if (count % 5 == 0) {
// Stuff every fifth loop
}
if (count % 12 == 0) {
// Stuff every twelfth loop
}
}
}
这确保所有模数同时正确地命中0,就在你在0开始另一个循环的时候。(最小的普通倍数很快得到很多大量的时间间隔,您可能必须使用long
或long long
来存储计数器。long long
和最多5342931457063200
应允许您触发不同的代码在同一个循环中每个间隔从2到40的路径。如果你需要更多的间隔,你需要运行单独的计数器。)