Помощь - Поиск - Пользователи - Календарь
Полная версия: Формула Ламберта.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Лилия
(Задача на рекурсию, на Паскале) Формула Ламберта. Вычислить приближенное значение е по формуле Ламберта e(k)=(a(k)+b(k))/(a(k)-b(k)); a(k)=(4*k-2)*a(k-1)+a(k-2); a(1)=2; a(0)=1; b(k)=(4*k-2)*b(k-1)+b(k-2); b(1)=1; b(0)=0.

Заранее спасибо...
volvo
Лилия, практически так же, как написано у тебя это и программируется:

function b(k: integer): real;
begin
if k < 2 then b := k
else b := (4*k-2) * b(k-1) + b(k-2);
end;

function a(k: integer): real;
begin
if k < 2 then a := k + 1
else a := (4*k-2) * a(k-1) + a(k-2);
end;

function e(k: integer): real;
begin
e := (a(k) + b(k)) / (a(k) - b(k));
end;

begin
writeln(e(3)); { Для увеличения точности - увеличивай параметр }
end.
Лилия
volvo, и что эта вся программа???

begin
writeln(e(3));
end.

а можно с экрана вводить переменную, например t, которую потом writeln(e(t))???
volvo
Цитата
и что эта вся программа???
yes2.gif А что, она не работает?

Можно запросить ввод параметра, и для него вызывать функцию:
var T: integer;
begin
write('T = '); readln(T);
writeln(e(T));
end.

(только надо как-то ограничить ввод T, потому что рекурсия все-таки, стек переполнить очень просто, программа начнет вылетать... Тем более, что уже e(3) дает ответ с точностью до 9 знака после запятой)...
Лилия
Она работает... Хорошо, я учту это... Volvo, спасибо большое за программу....
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.