Math 什么';创建这一系列数字的最优雅的方式是什么?

Math 什么';创建这一系列数字的最优雅的方式是什么?,math,collections,language-agnostic,series,code-formatting,Math,Collections,Language Agnostic,Series,Code Formatting,我在一个集合中有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语句检查索引,然后决定值应该从1向上还是向下。但是看起来太乱了 有没有一种优雅的方法来创建这样一系列的数字(如果可能的话,特别是没有if语句)?如果N>=3是

我在一个集合中有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语句检查
索引
,然后决定值应该从1向上还是向下。但是看起来太乱了


有没有一种优雅的方法来创建这样一系列的数字(如果可能的话,特别是没有if语句)?

如果
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

的偶数和奇数值,如果
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的奇偶值