我想找一个描述这个系列的公式。 我需要根据正整数设置一个布尔值。 它很简单,但我感觉有些愚蠢。
0 false
1 true
2 true
3 false
4 false
5 true
6 true
7 false
8 false
9 true
10 true
11 false
12 false
...
所以标志在每个奇数
处变化答案 0 :(得分:5)
好吧,对于每个奇数改变的标志,当且仅当(n+3)%4 <= 1
,其中%
是模运算符时,看起来你的布尔值应该是真的:
n (n+3)%4 Boolean
-- ------- -------
0 3 false
1 0 true
2 1 true
3 2 false
4 3 false
5 0 true
6 1 true
7 2 false
8 3 false
9 0 true
10 1 true
11 2 false
12 3 false
:: : : :
我故意添加了三个而不是减去一个,因为有些语言对模数运算符应该对负数做什么有不同的想法。请记住,这与语言无关。如果您正在寻找类似C或C的语言解决方案,请查看优秀的答案here from Christoffer Hammarström((n + 1) & 2
以防万一消失) - 这些语言更为简洁。< / p>
答案 1 :(得分:3)
在C和其他语言中,非零为真:(n + 1) & 2
,以及其他语言:(n + 1) & 2 != 0
。
答案 2 :(得分:2)
您可以先将int值除以2,然后检查它是偶数还是奇数。
boolean flag = ((i+1)/2)%2!=0;
也许有一个一个一个错误,所以请检查一下。
N (N+1)/2 ((N+1)/2)%2 compare != 0
0 0 0 false
1 1 1 true
2 1 1 true
3 2 0 false
4 2 0 false
5 3 1 true
6 3 1 true
7 4 0 false
8 4 0 false
9 5 1 true
...
答案 3 :(得分:0)
每个奇数处的标志更改,表示最后一位设置为1.
1 =&gt; 01,3 =&gt; 11,...... 9 =&gt; 1001,11 =&gt; 1011 等等.. 所以,你可以检查每一步的最后一位,只要它是1,翻转标志。