1. Мегаконкурс в апреле "Приведи друзей на codeby". Дарим деньги, подписку на журнал хакер и выдаем статус "Paid Access". Подробнее ...

    Скрыть объявление

Хвостовая Рекурсия

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

Наш партнер Genesis Hackspace
Статус темы:
Закрыта.
  1. Гость

    Уже несколько дней пытаюсь довести до ума вот эту задачку в Visual Prolog v.5.2.
    Напишите программу с хвостовой рекурсией, которая допускает ввод числа и способна завершаться двумя способами. Она должна начинаться умножением числа на себя до тех пор, пока не достигнет числа 81 или числа, большего чем 100. Если достигнуто число 81, то печатается "Da", если же число больше 100 - печатается "Net".
    Вот что получилось:
    Код (Text):
    predicates
    vich(integer)
    proverka_newB(integer)

    clauses
    vich(B):-
    DopB=B,
    NewB=DopB*B,
    write(B),nl,     
    write(NewB),nl,
    proverka_newB(NewB),
    vich(NewB).

    proverka_newB(NewB):-NewB<80.

    proverka_newB(NewB):-NewB>80,NewB<99, write ("Da "),nl,fail.

    proverka_newB(NewB):-NewB>99, write ("Net "),nl,fail.

    goal  
    vich(8).
    Например для числа 8: 8*8=64. Так как 81 не достигнуто, то должно сработать ещё одно вычисление, те 64*8=512. Но происходит умножение 64*64. Подскажите пожалуйста, как сделать чтобы работала правильно.
     
  2. rrrFer

    rrrFer Гость

    <!--shcode--><pre><code class='prolog'>p(T,N):-
    T > 100, write(no),!;
    T > 81, write(yes),!;
    T*N=TT, p(TT,N).[/CODE]
    не проверял
     
Загрузка...
Похожие Темы - Хвостовая Рекурсия
  1. Heavy10110
    Ответов:
    2
    Просмотров:
    91
  2. vera2014
    Ответов:
    0
    Просмотров:
    1.172
  3. 95процентов
    Ответов:
    7
    Просмотров:
    1.953
  4. 95процентов
    Ответов:
    0
    Просмотров:
    975
  5. 95процентов
    Ответов:
    0
    Просмотров:
    1.039
Статус темы:
Закрыта.

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