Мне нужно рекурсивно разделить число на два и сделать сегменты.до тех пор, пока длина сегмента не станет меньше 1;ех.когда число равно 15, у нас будет:
0,15 ==> 1 segment, length = 15
0,7.5,15 ==> 2 segments, length = 7.5
0,3.75,7.5,11.25,15 ==> 4 segments, length = 3.75
0,1.875,3.75,5.625,7.5,9.375,11.25,13.125,15 ==> 8 segments, length = 1.875
0,0.9375,1.875, ..... ,13.125,14.0625,15 ==> 16 segments, length = 0.9375
, пока я могу сделать это с помощью наивного кода, как показано ниже:
double delta = N; //N being the input number
while(delta > 1.0)
delta /= 2.0;
int count = (N / delta) + 1;
var series = Enumerable.Range(0, count).Select(x => x * delta).ToArray();
Есть ли лучший способ?