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

Тема в разделе "Другие", создана пользователем -, 21 ноя 2011.

  1. Гость

    Ребята, помогите пожалуйста.
    Вот задача нахождения факториала на 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 - натуральное число, тоже итеративным алгоритмом. Препод говорит что решение очень похоже на нахождение факториала, нужно только немного изменить.
    Кто может, помогите.
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    подскажу, предикат должен быть описан так:
    p( NL, N, S, R )

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

    Код (Text):
    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.
    не проверял
     
Загрузка...

Поделиться этой страницей