我在一个集合中有N个项目,我从1开始分配值,在列表的“中心”下降到0,然后线性地返回到1。
所以如果你有5个项目:
0 1 2 3 4
1 0.5 0 0.5 1
对于6个项目,中心的2个项目具有相同的值0。
0 1 2 3 4 5
1 0.5 0 0 0.5 1
现在我有一堆if语句检查index
,然后决定该值是从1上升还是下降。但它看起来太乱了。
是否有一种优雅的方式来创建这样一系列数字(如果可能的话,特别是没有if语句)?
答案 0 :(得分:5)
如果N >= 3
是奇数,那么
f(x) = fabs(2*x-N+1)/(N-1)
如果N >= 4
是偶数,那么
f(x) = (fabs(2*x-N+1) - 1)/(N-2)
要完全摆脱if语句,可以将其写为
f(x) = (fabs(2*x-N+1) + (N%2) - 1)/(N-2 + (N%2))
适用于N >= 3
的偶数和奇数值。