ВУЗ:
Составители:
Рубрика:
26
((member (car x) у)
(cons (car х)
(пересечение (cdr х) у)))
(t (пересечение (cdr х) у))))
**************************************************************************
[0] (load "f1.lsp")
ОК
[1] (пересечение '(d f g) '(h u g е))
(G)
ОРГАНИЗАЦИЯ ФУНКЦИЙ
Описание функции
Дать функции имя и определить ее можно с помощью функции DEFINE.
(DEFINE (fname param1 param2 …) тело)
Например:
[0] (DEFINE (plus a b) (+ a b))
PLUS
[1] (plus 1 2)
3
В результате fname становится именем функции.
Простая рекурсия
Функция является рекурсивной, если в её определении содержится вызов самой
этой функции. Простая рекурсия – это такой тип рекурсии, в котором вызов функции
встречается один раз. В большинстве случаев простую рекурсию можно заменить
процедурным циклом, однако, при её использовании программа, как правило,
становится более простой для понимания и элегантной.
Пример:
Определим функцию MyCOPY, которая строит копию списка:
(define (MyCOPY L)
(cond
((null? L) nil) ; условие окончания – пустой L
(t (cons ; иначе возвращаем список
; состоящий из:
(car L) ; головы исходного
(MyCOPY (cdr L)) ; и копии хвоста
; (рекурсивный вызов)
)
)
)
)
Вот результат работы этой функциии:
[1] (MyCOPY '(a bc def))
(A BC DEF)
26 ((member (car x) у) (cons (car х) (пересечение (cdr х) у))) (t (пересечение (cdr х) у)))) ************************************************************************** [0] (load "f1.lsp") ОК [1] (пересечение '(d f g) '(h u g е)) (G) ОРГАНИЗАЦИЯ ФУНКЦИЙ Описание функции Дать функции имя и определить ее можно с помощью функции DEFINE. (DEFINE (fname param1 param2 …) тело) Например: [0] (DEFINE (plus a b) (+ a b)) PLUS [1] (plus 1 2) 3 В результате fname становится именем функции. Простая рекурсия Функция является рекурсивной, если в её определении содержится вызов самой этой функции. Простая рекурсия – это такой тип рекурсии, в котором вызов функции встречается один раз. В большинстве случаев простую рекурсию можно заменить процедурным циклом, однако, при её использовании программа, как правило, становится более простой для понимания и элегантной. Пример: Определим функцию MyCOPY, которая строит копию списка: (define (MyCOPY L) (cond ((null? L) nil) ; условие окончания – пустой L (t (cons ; иначе возвращаем список ; состоящий из: (car L) ; головы исходного (MyCOPY (cdr L)) ; и копии хвоста ; (рекурсивный вызов) ) ) ) ) Вот результат работы этой функциии: [1] (MyCOPY '(a bc def)) (A BC DEF)
Страницы
- « первая
- ‹ предыдущая
- …
- 24
- 25
- 26
- 27
- 28
- …
- следующая ›
- последняя »