Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 10.03.2014, 20:51   #1 (permalink)
Светик123
Member
 
Регистрация: 02.03.2014
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question Турбо Паскаль. Рекурсии

задание: Вычислить рекурсивно функцию вида
у=COS(X)+COS(X^2)+COS(X^3)+...+COS(X^N)

текст программы:
program rekursia;
uses crt;
function fact(n:integer):integer;
begin
if n=0 then fact:=1
else
fact:=n*fact(n-1);
end;
var n:integer;
y,x:real;
begin
clrscr;
write ('n = '); readln (n);
write ('x = '); readln (x);
fact(n);
y:=exp(fact(n)*ln(cos(x)));
write('y = ',y:3:5);
readln;
end.

не могу понять, почему считает неправильно. помогите, пожалуйста.
заранее спасибо
Светик123 вне форума   Ответить с цитированием

Старый 10.03.2014, 20:51
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Вот топики которые так или иначе имеют сходства с вашим

Помогите составить программу на турбо паскаль
Программа на алгоритмическом языке Турбо Паскаль
Программа в Турбо-Паскаль 7,0
Два примера через турбо-Паскаль

Старый 10.03.2014, 20:57   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Светик123 Посмотреть сообщение
не могу понять, почему считает неправильно. помогите, пожалуйста. заранее спасибо
Подозреваю, что это потому, что выложенная программа к Вашему заданию не имеет ровно никакого отношения.
Vladimir_S вне форума   Ответить с цитированием
Старый 10.03.2014, 21:47   #3 (permalink)
Светик123
Member
 
Регистрация: 02.03.2014
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а как тогда нужно сделать?
Светик123 вне форума   Ответить с цитированием
Старый 10.03.2014, 22:01   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Светик123 Посмотреть сообщение
а как тогда нужно сделать?
Если бы я знал... Второй час голову ломаю - ну никак не построить рекурсивную функцию! Туговато у меня с ними...
Vladimir_S вне форума   Ответить с цитированием
Старый 11.03.2014, 00:54   #5 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Может тебе это чем-то поможет.
вот задание:
Цитата:
Дано натуральное число N. Вычислить:
1-1/2+1/4-1/8+...+(-1)^n*(1/2*n)
используя рекурсивную функцию.

Явно видно, что это геометрическая прогрессия
b1 = 1
q = -1/2
Sn = b1(q^n - 1) / (q - 1)

const b1=1; q=(-0.5);
var s: real;
var n: integer;
function Recurs(d: integer; p: real): real;
begin
if d=n then begin
writeln(s);
readln;
halt;
end;
s:=p+s*q;
Recurs(d+1,p)
end;
begin
readln(n);
s:=b1;
writeln(Recurs(1,1));
end.
Вот только не помню, правильно ли она решает.
Gruvi вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Метки
рекурсии., турбо паскаль


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 08:22.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.