• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Турбо Паскаль. Рекурсии

Светик123

Новые
Регистрация
2 Мар 2014
Сообщения
32
Реакции
0
Баллы
0
Турбо Паскаль. Рекурсии

задание: Вычислить рекурсивно функцию вида
у=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.

не могу понять, почему считает неправильно. помогите, пожалуйста.
заранее спасибо
 
не могу понять, почему считает неправильно. помогите, пожалуйста. заранее спасибо
Подозреваю, что это потому, что выложенная программа к Вашему заданию не имеет ровно никакого отношения. :D
 
Может тебе это чем-то поможет.
вот задание:
Дано натуральное число 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.

Вот только не помню, правильно ли она решает.
 
Назад
Сверху