Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ арифмитическая прогрессия

Автор: compiler 5.02.2007 1:12

я нашел код(где говорить не буду чтоб коекто не обвинил в рекламе) и не могу его понять(особенно одну его строчку), прошу помоч

Program Progressiy;
Var
a1, d, k: real;
n: integer;
{ - - - - - - - - - - - - - - - - - - - -}
Function Arif (a1, d: real; n: integer): real;
Begin
if n = 1
then
Arif := a1
else
Arif := Arif(a1, d, n - 1) + d; {что значит эта строчка}
End;
{ - - - - - - - - - - - - - - - - - - - -}
Begin
writeln('Задайте первый член прогрессии');
readln(a1);
writeln('Задайте разность арифметической прогрессии');
readln(d);
writeln('Арифметическая прогрессия ', Аrif(a1, d, n) : 4 : 2);
End.

заранее благодарен.

Автор: volvo 5.02.2007 1:29

Это рекурсивное вычисление предыдущего члена арифметической прогрессии ... Функция будет вызывать сама себя до тех пор, пока не дойдет до элемента с n = 1, присвоит ему значение a1, и рекурсия начнет раскручиваться в обратную сторону, прибавляя необходимое число d, чтобы вычислить правильный результат...