Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2021, 12:00   #1
kilogram4ik
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 68
По умолчанию Составить рекуррентную функцию

Составить рекуррентную функцию. Дано натуральное число N и действительное число a. Вычислить:
a/1+1/a*(a+1)+...+1/a*(a+1)...(a+n)
kilogram4ik вне форума Ответить с цитированием
Старый 08.02.2021, 16:17   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,657
По умолчанию

Сильно подозреваю, что первый член последовательности 1/a - больно уж он выламывается из закономерности.
А общий член правильно описан, точно 1/a*(a+1)...(a+n) , а не 1/(a*(a+1)...(a+n)) ?
-----------------
И задачу я не понял. ТСу нужна рекурсия в чистом виде (я попробовал - что-то никак) или же функция, реализующая эту рекурентную формулу - так тут с циклами - запросто.

Последний раз редактировалось digitalis; 09.02.2021 в 10:24.
digitalis вне форума Ответить с цитированием
Старый 09.02.2021, 10:51   #3
kilogram4ik
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 68
По умолчанию

Вроде правильно по скрину выписал
Изображения
Тип файла: png изображение_2021-02-09_105048.png (845 байт, 39 просмотров)
kilogram4ik вне форума Ответить с цитированием
Старый 09.02.2021, 11:59   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,657
По умолчанию

Вот то-то и оно, что неправильно. a/1 и 1/a - это одно и то же?
1/a*(a+1)...(a+n) и 1/(a*(a+1)...(a+n)) - это одно и то же? Единицу поделили на а, а потом умножаем, умножаем до посинения. Хотя всё надо было перемножить в знаменателе, а потом уж делить 1 на этот зоопарк.
Ну если по крестьянски, без рекурсии, то как-то так:
Код:
function summa (a:Extended;n:integer): Extended ;
var i: integer; tmp,s: Extended ;
begin
  s := 1/a ;
  tmp := 1/a ;
  for i := 1 to n do
    begin
      tmp := tmp/(a+i) ;
      s := s + tmp ;
    end ;
  summa := s;
end ;

Последний раз редактировалось digitalis; 09.02.2021 в 13:40.
digitalis вне форума Ответить с цитированием
Старый 12.02.2021, 04:41   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,356
По умолчанию

Код:
function f(a: Extended; n, i: integer): Extended;
begin
  if i = 0 then
    f := f(a, n, i + 1) / a
  else if i > n then
    f := 1
  else
    f := 1 + f(a, n, i + 1) / (a + i);
end ;
Вызывать с i = 0.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить рекуррентную функцию вычисления выражения. Pascal AngryProj Помощь студентам 5 27.11.2014 21:37
Составить функцию (СИ) GroMkiY Помощь студентам 1 06.12.2013 23:34
Составить функцию в программе. Даша1046 Помощь студентам 1 03.07.2013 22:09
Составить функцию C++ shadowmvn Помощь студентам 2 24.12.2012 21:01
как составить функцию Sdeeee Microsoft Office Excel 3 03.02.2010 17:07