База ответов ИНТУИТ

Введение в программирование на Лиспе

<<- Назад к вопросам

Какая из последовательностей действий на первом шаге рекурсии, выполняемых интерпретатором при вычислении выражения (Факториал 1) , где факториал:
(DEFUN Факториал  (LAMBDA (N)     (COND ((= N 0 ) 1 )           (T  ( *  N  (Факториал (- N 1 )))  )  )      )       )     

является верной:

(Отметьте один правильный вариант ответа.)

Варианты ответа
выбор определения функции { (COND ((= N 0 ) 1 ) (T ( * N (Факториал (- N 1 ))) ) }, выделение параметров {n = 1}, перебор предикатов, вычитание единицы {N=N-1} , вычисление первого предиката {((= N 0 ) 1 ), ответ 1}.
выбор определения функции { (COND ((= N 0 ) 1 ) (T ( * N (Факториал (- N 1 ))) ) }, выделение параметров {n = 1}, перебор предикатов, выбор первой ветви {((= N 0 ) 1 )} , вычисление функции =, вычисление предиката (Nil 1), т.е. переход ко второй ветви, выбор второй ветви cond {(T ( * N (Факториал (- N 1 ))) ) }, вычисление этого предиката и переход ко второму шагу рекурсии(Верный ответ)
выбор определения функции { (COND ((= N 0 ) 1 ) (T ( * N (Факториал (- N 1 ))) ) }, выделение параметров {n = 1}, немедленный выбор второй ветви cond {(T ( * N (Факториал (- N 1 ))) ) }, вычисление этого предиката и переход ко второму шагу рекурсии
Похожие вопросы
Какая из последовательностей форм позволяет посчитать факториал от N:
Что происходит при вычислении интерпретатором формы ((lambda (x) (cons x x)) 'A):
Какие события происходят в системе при вычислении интерпретатором формы ((lambda (x y) (cons x y)) 'A 'B):
В каком случае правильно указано число вызовов функция Cons (входящей в состав определения sublis) при вызове функции sublis, имеющей определение
(DEFUN sub2 (al z) (COND    ((null al) z)   ((equal (CAAR al) z) (CDAR al))   ((QUOTE T) (sub2 (CDR al) z))        ) )(DEFUN sublis (al y) (COND     ((ATOM y) (sub2 al y))     ((QUOTE T)(CONS        (sublis al (CAR y))        (sublis al (CDR y))    ) )))		 

при интерпретации выражений с указанными ниже аргументами:

В каком случае правильно указано число вызовов функция Cons (входящей в состав определения sublis) при вызове функции sublis, имеющей определение
(DEFUN sub2 (al z) (COND      ((null al) z)     ((equal (CAAR al) z) (CDAR al))     ((QUOTE T) (sub2 (CDR al) z))        ) )(DEFUN sublis (al y) (COND       ((ATOM y) (sub2 al y))       ((QUOTE T)(CONS      (sublis al (CAR y))          (sublis al (CDR y))    ) )))     

при интерпретации выражений с указанными ниже аргументами:

В каком случае правильно указано число вызовов функция Cons (входящей в состав определения sublis) при вызове функции sublis, имеющей определение
 (DEFUN sub2 (al z) (COND        ((null al) z)       ((equal (CAAR al) z) (CDAR al))       ((QUOTE T) (sub2 (CDR al) z))        ) )(DEFUN sublis (al y) (COND         ((ATOM y) (sub2 al y))         ((QUOTE T)(CONS      (sublis al (CAR y))        (sublis al (CDR y))    ) ))) 			

при интерпретации выражений с указанными ниже аргументами:

Какое из приведенных ниже выражений является примером правильного использования функционала map-el:
(defun map-el (fn xl)                             (cond                                              (xl (cons (funcall fn (car xl) )                (map-el fn (cdr xl))        )    )  )   )                                                  
Какое из приведенных ниже выражений является примером правильного использования функционала map-el:
 (defun map-el (fn xl)                             (cond                                              (xl (cons (funcall fn (car xl) )                (map-el fn (cdr xl))        )    )  )   )                                                  
В каком случае правильно указано количество обращений к последней ветви второго (вложенного) Cond функции Equal, имеющей определение
 (DEFUN equal (x y) (COND     		 ((ATOM x) (COND     		   ((ATOM y) (EQ x y))      		   ((QUOTE T) (QUOTE NIL))    		 )         )        ((equal (CAR x)(CAR y)) (equal (CDR x)(CDR y)))  ((QUOTE T) (QUOTE NIL))  )   )    

при интерпретации выражений с указанными ниже аргументами:

Какой из результатов вызова функционала map-ap, аргументами которого выступают следующие функции и списки, является правильным:
(defun map-ap (fn ll)     (cond        (ll (append (fn (car ll) )                  (map-ap fn (cdr ll) ))    )  )   )