ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »
