如何在代码中描述这个系列?

时间:2010-04-14 08:38:10

标签: algorithm language-agnostic

我想找一个描述这个系列的公式。 我需要根据正整数设置一个布尔值。 它很简单,但我感觉有些愚蠢。

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
...

所以标志在每个奇数

处变化

4 个答案:

答案 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,翻转标志。