Пример 8.2. Использование рекурсии для вычисления факториала

(deffunction factorial (?a)

(if (or (not (integerp?a)) (<?a 0)) then

(printout t "Factorial Error!" crlf)

else

(if (=?a 0) then

else

(*?a (factorial (-?a 1))))))

Взаимная рекурсия между двумя функциями требует предварительного объ­явления одной из этих функций. Для предварительного объявления функ­ции в CLIPS используется конструктор deffunction с пустым списком дей­ствий. В следующем примере функция foo предварительно объявлена и та­ким образом может быть вызвана из функции bar. Окончательная реализация функции foo выполнена конструктором после объявления функции bar.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: