从自然界到整数创建以下地图f的最简洁方式(在伪代码中)是什么? f(0)= 0; f(1)= 1; f(2)= -1; f(3)= 2; f(4)= -2; f(5)= 3; 等
你可以将它们想象成双对称阿基米德螺线的零交叉。
哦,不允许浮动数学!浮动数学在这种情况下会很难看。
答案 0 :(得分:3)
答案 1 :(得分:1)
不漂亮,但是单线程有效并且不使用条件:
f(i):
f := (2 * (i mod 2) - 1) * ((i + 1) >> 1)
当然,使用条件,它更具可读性:
f(i):
if (i mod 2) is
0: f := -((i + 1) >> 1)
1: f := ((i + 1) >> 1)
答案 2 :(得分:1)
使用C表示法,f(n)
将为n % 2 == 0 ? -n/2 : (n+1)/2
,即:
如果n
是偶数-n/2
,如果n
是奇数,那么(n+1)/2