Помогите улучшить код задачи.
Дано: натуральное n, действительные a 1, a 2,...a n. Вычис-
лить: a1 + a2 * (a2 –1) + a3 * (a3 –1) * (a3 – 2) + a4 * (a4 – 1) * (a4 –
−2) * (a4 – 3) + .+ an * (an – 1) * (an – 2) *...* (an – n +1).
Моё решение
var
n, i, Z, X, F: integer;
a, g, S, j: real;
begin
repeat
write('Введите длину последовательности n=');
readln(n);
until n > 0;
X := 0;
Z := -2;
for i := 1 to n do
begin
write('Введите a=');
readln(a);
if S = 0 then S := S + a else
begin;
F := 1;
J := 0;
Z := Z + 1;
g := (a - F);
j := j + (a * g);
for X := 0 to Z do
begin;
F := F + 1;
g := (a - F);
j := j * g;
end;
S := S + j;
end;
end;
writeln('Результат', S);
end.
Можно ли упростить код (Массивы использовать нельзя)
Долго я ломал над ней голову, Прошу ткнуть носом если есть во что. Буду благодарен