Имеется многоэтажная (несколько десятков "этажей") дробь. Требуется ее вычислить.
Нельзя не заметить, что эта дробь содержит около 50-и "этажей". Но у нее есть повторяющиеся элементы, а именно знаменатели. Главное в данном случае применить правильную формулу. В первую очередь числа слева от плюсов это идущие подряд нечетные числа. Их можно представить в виде 2*i+1 (но в эту последовательность не войдет ноль, это надо учесть!). Так же можно заметить, что каждый очередной знаменатель это дробь сумма из такого нечетного числа и еще одной такой же дроби и так до конца. А в конце стоит уже не дробь, а конкретное число. А именно следующее за последним слагаемым нечетное число.
Если бы эта дробь не была такой большой и ее можно было решить в ручную, то это следовало бы делать начиная с самой нижней дроби. Именно этим способом и следует решать всю эту громадину, используя цикл. Для этого понадобится такая формула: res= i+(1/res). Эта формула как раз повторяет структуру дроби. Так как нам известно число, стоящее в самом нижнем знаменателе изначально присваиваем это число к res. И далее прокручиваем эту формулу в цикле, проходя по дроби снизу вверх.
Чтобы не мелочиться, тем более, что это ни к чему, напишем функцию, вычисляющую дробь с такой же закономерностью любого размера (с любым количеством этажей).
Обратите внимание на строку res= 1/res. В цикле вычисляется значение всей части ниже самой верхней единицы. Но так как 0 не вписывается в последовательность нечетных чисел, приходится производить деление оставшейся единицы отдельно, хотя и самый верхний уровень дроби тоже вписывается в выше описанную формулу (но при этом i =0). В качестве фактического параметра в данную функцию передается число, находящееся в самом нижнем знаменателе (в нашем случае 103).
Далее в теле программы применяем нашу функцию для вычисления данной дроби.
printf("%f", oper(103));
P.S. Если у кого есть идея, как организовать это решение с помощью рекурсии - жду...