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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2014, 16:09   #1
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию Рекуррентная формула,не понятен алгоритм

Здравствуйте,перед мной поставлено задание,но я не могу понять,что от меня требуется и по какому мне алгоритму решать,если кто понимает,натолкните на мысль.Задание нужно реализовать двумя способами рекурсивным и обычным.А я не могу понять даже как обычным сделать.
Задание:
Безымянный.jpg

Последний раз редактировалось spectrum988; 16.03.2014 в 16:13.
spectrum988 вне форума Ответить с цитированием
Старый 16.03.2014, 16:33   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Под обычным способом имеется ввиду цикл.
Рекурсивный:
Код:
function f(n: integer; a: real): real;
var
  t: real;
begin
  if n = 0 then
    f := 0.5 * (1 + a)
  else begin
    t := f(n - 1, a);
    f := 0.5 * (t + a / t);
  end;
end;
...
x = f(10, 2);
Правда тут получается ограничение по количеству итераций, но обычно вычисляют с заданной точностью.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 16.03.2014 в 16:39.
BDA вне форума Ответить с цитированием
Старый 16.03.2014, 17:27   #3
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Я понимаю что цикл,но я не понял самого задания,что от меня требуется,сам смысл,но попробую счас разобраться в вашем коде.

Получается я ввожу n c клавиатуры,понимаю все но вот здесь тупик
t := f(n - 1, a);а x = f(10, 2) передача параметров ?

Последний раз редактировалось Stilet; 16.03.2014 в 19:35.
spectrum988 вне форума Ответить с цитированием
Старый 16.03.2014, 18:56   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Скорее требуется считать а и передать его вторым аргументов в функцию f, n же задать строго в коде. В условии не оговорено, когда завершать вычисления (можно, например, так и оставить n = 10). Насчет t := f(n - 1, a). В n-ом члене 2 раза используется n-1-й член, чтобы 2 раза его не вычислять используется временная переменная t.
f(n, a) = Xn
f(n - 1, a) = Xn-1
f(0, a) = X0
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 16.03.2014, 19:33   #5
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Cпасибо,теперь намного стало яснее.А как у меня вообще будет работать эта функция,я например не понимаю,а мне нужно вводить или оно должно получиться ?

Последний раз редактировалось spectrum988; 16.03.2014 в 22:49.
spectrum988 вне форума Ответить с цитированием
Старый 17.03.2014, 01:27   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

1) Опасно дописывать вопрос в сообщения через 3 часа (хотя тут сложно что-то посоветовать: 2 сообщения - флуд; исправленное сообщение - не появляется уведомление о новом сообщении)
2) Не очень понял вопрос. Вы запрашиваете значение а у пользователя и выводите значение f(10, a) на экран. Советую выяснить, по какому признаку нужно завершать вычисления. Если использовать цикл, то там достаточно просто сделать завершение при достижении нужной точности.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 17.03.2014, 14:13   #7
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

x=корень(a) нам нужно его вычислить,а я вообще не понимаю как оно его будет вычислять.
spectrum988 вне форума Ответить с цитированием
Старый 17.03.2014, 14:31   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Это рекуррентная формула Герона для вычисления корня квадратного. Предел Xn при n->бесконечности и есть корень из a. До бесконечности не надо вычислять
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.03.2014, 01:17   #9
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Спасибо большое,вот такое объяснение я и хотел услышать,теперь мне все понятно,еще раз спасибо.
spectrum988 вне форума Ответить с цитированием
Старый 30.03.2014, 14:16   #10
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Cкажите пожалуйста,что здесь не то
Код:
double fun(int,int);

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int n,a;
n=StrToInt(Edit1->Text);
a=StrToInt(Edit4->Text);
switch(RadioGroup1->ItemIndex)
 {
  case 0:
   Edit2->Text = FloatToStrF(fun(n,a),ffFixed,8,1);
  break;
  case 1:
   Edit3->Text = FloatToStrF(fun(n,a),ffFixed,8,1);
  break;
 }
}
double fun(int n,int a)
{
 float t;
  if (n==0)
   fun=(1/2)*(1+a);
  else
   {
    t=fun(n-1,a);
    fun=(1/2)*(t+a/t);
   }
return fun;
}

Последний раз редактировалось spectrum988; 30.03.2014 в 14:35.
spectrum988 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекуррентная формула Solidera Помощь студентам 5 01.12.2013 18:47
Рекуррентная формула dimka123 Паскаль, Turbo Pascal, PascalABC.NET 6 09.11.2013 07:03
рекуррентная формула unbanned Паскаль, Turbo Pascal, PascalABC.NET 5 18.12.2010 09:23
Рекуррентная формула Paradoxer Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 05.06.2009 20:14
рекуррентная формула redisque Паскаль, Turbo Pascal, PascalABC.NET 2 06.05.2009 21:08