logo
TurboProlog / Документация / TOM_1

Упражнения

1. Следующая ниже программа - улучшенная версия вычисления факториа-

ла.

/* Программа CH07EX08.PRO */

predicates

factorial(integer, real)

factorial(integer, real, integer, real)

/* Если числа превосходят 32767 - они объявляются вещественны-

ми */

factorial(N,FactN,NewI,NewP).

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).

Загрузите и выполните эту программу.

2. Напишите программу с хвостовой рекурсией, которая будет работать

как CH07EX02.PRO, но без поиска с возвратом.

3. Напишите программу с хвостовой рекурсией, которая печатает табли-

цу степеней числа 2, как показано ниже:

N 2^N

--- -----

1 2

2 4

3 8

4 16

... ...

10 1024

Остановите программу при N = 10.

4. Напишите программу с хвостовой рекурсией, которая допускает ввод

числа и способна завершаться двумя способами. Она должна начинаться

умножением числа на себя до тех пор, пока не достигнет числа 81 или

числа, большего чем 100. Если достигнуто число 81, то печатается

"YES", если же число больше 100 - печатается "NO".