• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Итеративный Алгоритм

  • Автор темы Guest
  • Дата начала
G

Guest

Ребята, помогите пожалуйста.
Вот задача нахождения факториала на VIP v5.2 по итеративному алгоритму:

prolog Код:
predicates
factorial(unsigned, long)
factorial(unsigned, long, unsigned, long)
clauses
factorial(N, FactN) :-
factorial(N, FactN, 1, 1).
factorial(N, FactN, N, FactN) :- !.
factorial(N, FactN, I, P) :-
NewI = I+1,
NewP = P*NewI,
factorial(N, FactN, NewI, NewP).
goal
X=3,
factorial (X, FactX).

А мне нужно решить задачу нахождения суммы ряда ряда
s=1/sin1 + 1/(sin1+sin2) + ... +1/(sin1+sin2+...sinN), где N - натуральное число, тоже итеративным алгоритмом. Препод говорит что решение очень похоже на нахождение факториала, нужно только немного изменить.
Кто может, помогите.
 
R

rrrFer

подскажу, предикат должен быть описан так:
p( NL, N, S, R )

0 - ограничение для аргумента синуса
1 - аргумент синуса
2 - сумма члена ряда( sin1+sin2+...sinN )
3 - результат работы

работать как то так:

Код:
p( N, N, _, 0 ):-!.
p( N, I, S, R ):-
II = I + 1,
SS = S + sin(I),
p( N, II, SS, RR ),
R = RR + 1 / SS.

не проверял
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!