IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Рекурсия, Написать рекурсивную функцию
anaf3r0n
сообщение 23.10.2011 11:54
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Доброго времени суток всем!

Вычислить сумму ряда:
S:=x^n+x^(n-1)/2+x^(n-2)/3+...+x/n (для данного ряда написать рекуррентную формулу)

с точностью до члена ряда e=0.000001

Вот что написал, но не знаю как с рекурсией быть, как реализовать:

uses crt;
const
e=0.000001;
var
x,x1,x2,n,i,s1:real;

function pow(x,n:real):real;
begin
pow:=exp(n*ln(x));
end;

begin
clrscr;
write('X:= '); readln(x);
write('N:= '); readln(n);
i:=1;
x1:=pow(x,n)/i;
while abs(s1-x2)<=e do begin
x2:=pow(x,n-i)/(i+1);
i:=i+1;
s1:=s1+x2;
end;
writeln(s1+x1);
end.


Сообщение отредактировано: anaf3r0n - 23.10.2011 12:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
IUnknown
сообщение 23.10.2011 12:15
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


А при чем тут рекурсия? Разговор в задании идет про рекуррентную, а не про рекурсивную формулу. Это разные вещи вообще-то...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
anaf3r0n
сообщение 23.10.2011 12:20
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Цитата(IUnknown @ 23.10.2011 13:15) *

А при чем тут рекурсия? Разговор в задании идет про рекуррентную, а не про рекурсивную формулу. Это разные вещи вообще-то...


Прошу прощения за не компетентность в данном вопросе. Так как быть с рекуррентной формулой?

Сообщение отредактировано: anaf3r0n - 23.10.2011 12:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 23.10.2011 12:31
Сообщение #4


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Для начала - разобраться, что такое есть рекуррентная формула. Это получение новых данных на основе уже известных. То есть, тебе надо не вычислять xk на каждой итерации, а выяснить, что надо сделать с i-тым членом ряда, чтобы он превратился в (i+1)-ый. Может быть - на что-то его домножить, может быть - разделить, но а результате ты должен уметь из первого члена получить второй, из второго - третий, из третьего - четвертый, и так далее.

Попробуй это реализовать самостоятельно. Хинт: от перемены мест слагаемых сумма не меняется. smile.gif

Сообщение отредактировано: IUnknown - 23.10.2011 12:32
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
anaf3r0n
сообщение 23.10.2011 12:49
Сообщение #5





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Цитата(IUnknown @ 23.10.2011 13:31) *

Для начала - разобраться, что такое есть рекуррентная формула. Это получение новых данных на основе уже известных. То есть, тебе надо не вычислять xk на каждой итерации, а выяснить, что надо сделать с i-тым членом ряда, чтобы он превратился в (i+1)-ый. Может быть - на что-то его домножить, может быть - разделить, но а результате ты должен уметь из первого члена получить второй, из второго - третий, из третьего - четвертый, и так далее.

Попробуй это реализовать самостоятельно. Хинт: от перемены мест слагаемых сумма не меняется. smile.gif


помочь не сможешь с выводом рекуррентной формулы?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Krjuger
сообщение 23.10.2011 14:06
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Вот смотри,как изменяеться у тебя твоя формула? Скаждым шагом степерь х уменьшаеться на 1,чтобы этого добиться надо i-тый член делить на х. затем надо разобраться с знаменателими.Смотрим второй член делиться на 2,третий уже на 3,самое простое что приходит в голову это,чтобы получить третий член из второго надо его умножить на 2 и разделить на 3.Теперь обобщим все это и перейдем от чисел к абстракциям.

an:=x^n;//задаем начальное значение,оно же первый член.
for i:=1 to n-1 do
an:=an*i/((i+1)*x);


Почему же цикл до n-1, а не до n...Это изза того что в конце концов мы в знаменателе должны получить деление на n, а по нашей формуле мы делим на I+1.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 5:57
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"