Найти наименьший номер последовательности, заданной рекуррентной формулой - Pascal ABC
Формулировка задачи:
Найти наименьший номер последовательности, заданной рекуррентной формулой,
для которого выполняется условие |an - an-1l < e. Здесь e - малая величина.
Вывести на экран этот номер и все элементы ai, где i = 1,2, ..., n.
an=2+a2n-1,a1=2
---------------------------------------------------------------------
2an-1
Это черта дроби, они идет после равно an
Решение задачи: «Найти наименьший номер последовательности, заданной рекуррентной формулой»
textual
Листинг программы
var a1,a,e:real;
n:integer;
begin
repeat
write('Введите малую величину 0<e<1 e=');
readln(e);
until(e>0)and(e<1);
a1:=2;
a:=(2+a1*a1)/(2*a1);
writeln('n=1 a=',a1:0:5);
writeln('n=2 a=',a:0:5);
n:=2;
while abs(a1-a)>=e do
begin
a1:=a;
n:=n+1;
a:=(2+a1*a1)/(2*a1);
writeln('n=',n,' a=',a:0:5);
end;
write('n=',n);
end.
Объяснение кода листинга программы
- Переменные a1, a и e объявляются как real и integer соответственно.
- Цикл while считывает значение переменной e с помощью функции readln() до тех пор, пока e больше 0 и меньше 1.
- Значение переменной a1 инициализируется как 2.
- Значение переменной a вычисляется как (2+a1a1)/(2a1).
- Выводится значение переменной a1 и a с шагом 5 десятичных знаков.
- Цикл while выполняется до тех пор, пока абсолютное значение разности a1 и a больше или равно e.
- Внутри цикла значение переменной a1 заменяется на значение a, значение переменной n увеличивается на 1, а затем вычисляется новое значение a по формуле (2+a1a1)/(2a1).
- Выводится значение переменной n и a с шагом 5 десятичных знаков.
- После окончания цикла выводится значение переменной n.
- Код завершается.